RecyclerView是support.v7包中的控件,可以说是ListView和GridView的增强升级版。RecyclerView可用于展现大量的数据,可用性更高。RecyclerView标准化了ViewHolder,可以轻松实现ListView实现不了的样式和功能,通过布局管理器LayoutManager可控制Item的布局方式,通过设置Item操作动画自定义Item添加和删除的动画,通过设置Item之间的间隔样式,自定义间隔。
1.RecycleView的配置
在build.gradle文件中引入该类。
compile 'com.android.support:recyclerview-v7:23.4.0'
2.RecycleView 的初使用
activity对应的view
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<include
android:id="@+id/no_data_view"
layout="@layout/layout_no_data_view"/>
</android.support.constraint.ConstraintLayout>
RecyclerView提供了三种布局管理器:LinerLayoutManager、GridLayoutManager、StaggeredGridLayoutManager
Recycle recyclerView = findViewById(R.id.recyclerView);
//1.LinerLayoutManager 以垂直或者水平列表方式展示Item
LinearLayoutManager layoutManager = new LinearLayoutManager(BaseApplication.getInstance());
//2. GridLayoutManager 以网格方式展示Item
GridLayoutManager layoutManager = new GridLayoutManager(context, 3);
// 3.StaggeredGridLayoutManager 以瀑布流方式展示Item
// 第一个参数表示列数,就好像 GridView 的列数一样,第二个参数表示方向,可以很方便的实现横向滚动或者纵向滚动。
StaggeredGridLayoutManager layoutManager1 = new StaggeredGridLayoutManager(3,VERTICAL);
recyclerView.setLayoutManager(layoutManager);
MyListApapter mAdapter = new MyListAdapter(context);
recyclerView.setAdapter(mAdapter);
RecycleView对应的适配器
public class MyListAdapter extends RecyclerView.Adapter<MyListAdapter.ViewHolder> {
private Context context;
private List<String> dataList;
public MyListAdapter(Context context, List<String> dataList) {
this.context = context;
this.dataList = dataList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
// 实例化展示的view
View view = LayoutInflater.from(context).inflate(R.layout.item_book_shelf, viewGroup, false);
// 实例化viewholder
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int i) {
// 绑定数据
........
}
@Override
public int getItemCount() {
return dataList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
View rootView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
rootView = itemView.findViewById(R.id.rootView);
}
}
}
参考:
添加链接描述