一、加入JAR包

第一感觉这个东东,好复杂,没ListView来的快,方便

在项目中加入android-support-v7-recyclerview.jar包

这个包在extras\android\support\v7\recyclerview\libs这个目录下。
在studio中加入依赖

//添加依赖包
compile 'com.android.support:recyclerview-v7:+

二、在布局文件中加入RecyclerView。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.liunan.recyclerviewstudy.MainActivity"> <android.support.v7.widget.RecyclerView
android:id="@+id/main_recylist"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>

三在Activtiy中初始化

package com.liunan.recyclerviewstudy;

import android.app.Activity;
import android.graphics.drawable.GradientDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager; import java.util.ArrayList;
import java.util.List; public class MainActivity extends Activity { private RecyclerView mRecyclerView; private List<String> mDataList ; private MyAdapter myAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData(); } /**
* 初始化
*/
private void initView() {
//找到这个Listview
mRecyclerView = (RecyclerView) findViewById(R.id.main_recylist);
//设置线性管理器
mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); } /**
* 初始化数据
*/
private void initData() { mDataList = new ArrayList<String>();
for (int i=0;i<50;i++){
mDataList.add("内容 - "+i);
}
/*
设置适配器
*/
myAdapter = new MyAdapter(mDataList);
mRecyclerView.setAdapter(myAdapter);
} }

三设置Adapter与Item

这个Adapter要继承RecyclerView.Adapter

package com.liunan.recyclerviewstudy;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import java.util.List; /**
* RecyclerView适配器
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mDataList; public MyAdapter(List<String> list) {
mDataList = list;
} @Override
public int getItemCount() {
// 返回数据集合大小
return mDataList == null ? 0 : mDataList.size();
} @Override
public void onBindViewHolder(ViewHolder holder, int position) { //获取这个TextView TextView tv= holder.mTvTitle; tv.setText(mDataList.get(position));
} @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.main_listview, parent, false));
} public class ViewHolder extends RecyclerView.ViewHolder { private TextView mTvTitle; public ViewHolder(View itemView) {
super(itemView);
mTvTitle = (TextView) itemView.findViewById(R.id.item_tv); } } }

item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"> <TextView
android:clickable="true"
android:textSize="18sp"
android:id="@+id/item_tv"
android:layout_width="200dp"
android:layout_height="50dp"
android:background="#ff0"
android:text="测试"/> </LinearLayout>

运行效果

四更改为GridView

在Activity中将

//设置线性管理器
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

更改为

//设置表格管理器
mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));

效果

五使用瀑布式的方式

同样更改上面的地方
//设置瀑布式,交错
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));

更改adapter中onBindViewHolder方法

     @Override
public void onBindViewHolder(ViewHolder holder, int position) { //获取这个TextView TextView tv= holder.mTvTitle; // 获取布局参数 LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tv.getLayoutParams(); //根据数据的位置设置不同的高度与背景色
if(position%2==0){
//设置背景色
tv.setBackgroundColor(Color.parseColor("#3300ff00"));
//设置高度
lp.height=100;
}else{
tv.setBackgroundColor(Color.parseColor("#3300ffff"));
lp.height=50;
}
tv.setLayoutParams(lp);
tv.setText(mDataList.get(position));
}

效果

默认的分割线没有实现要自己实现RecyclerView.ItemDecoration

												

最新文章

  1. C# 4.0四大新特性代码示例与解读
  2. JAVA 笔试笔记
  3. nRF52832开发日志--SAADC调试
  4. dpkg用法详解
  5. iOS静态库.a文件制作和导入使用
  6. 用户管理 之 在Linux系统中,批量添加用户的操作流程
  7. bea weblogic workshop中文乱码
  8. Oracle RAC备份异机单实例恢复演练
  9. FC网络学习笔记02 -网络配置方法
  10. 【转】Android点击空白区域,隐藏输入法软键盘
  11. windows phone 墓碑化(9)
  12. Ubuntu下安装composer及配置
  13. vue jquery js 获取当前时间本周的第一天 和 本月的第一天
  14. MySQL:(一)
  15. 【tomcat环境搭建】一台服务器上部署多个tomcat
  16. TODO monkey笔记,PC端执行和手机端执行
  17. 树和二叉树-&gt;基础知识
  18. mybatis test条件判断 如何引用 传入的 list参数中的map中的值
  19. K8S 使用简单的NFS 作为 持久存储的 StorageClass 的简单测试.
  20. 洛咕 P2447 [SDOI2010]外星千足虫

热门文章

  1. 【Swift学习】Swift编程之旅---闭包(十一)
  2. 用Qt写软件系列五:一个安全防护软件的制作(1)
  3. 网络基础:NetBIOS
  4. 30天C#基础巩固------面向鸭子编程,关于string和File的练习
  5. Allok Video to FLV Converter 可以用的 FixFlash.exe
  6. iOS 阶段学习第十天笔记(结构体)
  7. 炉石传说 C# 设计文档(序)
  8. 孙鑫MFC学习笔记11:保存图像
  9. IOS 集成第三方登录
  10. Guava学习笔记:简化异常处理的Throwables类