一、RecyclerView概述
RecyclerView是一个灵活的、可定制化的、高性能的控件,是用来替换ListView、GridView等列表型控件的新型控件。RecyclerView可以替换ListView、GridView,并且提供了更好的适配器,可以灵活地管理布局和动画,可以加入装饰器,使得我们可以自由定制它的布局、样式和行为。
二、RecyclerView的特点
1.使用RecyclerView可以处理大量的数据,而不用担心会出现OOM。
2.现代化的数据动态绑定模式。使用RecyclerView可以方法是更简单的处理数据绑定问题,可以从ViewHolder中向View绑定数据。这样在有大量数据变更时会比较高效地方法是数据绑定。
3.在滚动过程中可以高效地处理item控件的回收与重用,改善杂乱绑定view而导致adapter效率降低的问题。
4.RecyclerView是高度模块化的组件,这意味着它几乎可以定制所有的书写输出模型,在实现流畅的垂直布局的同时也可以实现复杂的网格控件。
5.您可以完全替换项的动画。RecyclerView允许您完全更改动画并在需要时添加新的项动画。该库默认提供了典型的创建,移动,删除集合,以满足大多数应用程序的需要。
三、RecyclerView的使用
1. 添加RecyclerView控件
在 Android Studio的design模式下找到要添加RecyclerView的xml布局文件进行编写,添加如下代码:
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
/>
2.适配器及数据绑定
在使用RecyclerView之前,需要为它编写一个Adapter,实现数据的绑定过程。要达到最好的效果,建议使用android.support.v7.widget.RecyclerView。
RecyclerView.Adapte,作为Recycler关键的适配器,必须为数据源提供绑定的,view创建,以及视图和数据源绑定设置的方法。
最简单的Adapter代码示例:
public class MyAdapter extends RecyclerView.Adapter
{
private List
mDataSet;
public MyAdapter(List
dataSet) {
mDataSet = dataSet;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(View v) {
super(v);
mTextView = (TextView) v.findViewById(R.id.textView);
}
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_text_view, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.mTextView.setText(mDataSet.get(position));
}
@Override
public int getItemCount() {
return mDataSet.size();
}
}
3.使用RecyclerView的LayoutManager和ItemDecoration
如果使用RecyclerView,您需要实现LayoutManager和ItemDecoration接口来实现您想要的布局和构造细节。
LinearLayoutManager是框架内置的一个Layout manager,支持在RecyclerView中的线性布局,包括垂直和水平方向。
代码示例:
RecyclerView recyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
MyAdapter myAdapter = new MyAdapter(myDataSet);
recyclerView.setAdapter(myAdapter);
recyclerView.addItemDecoration(new DividerItemDecoration(this,layoutManager.getOrientation()));
四、RecyclerView的高级应用
1.定义多个Item View布局
在RecyclerView中,可以根据其类型定义多个布局文件。多个类型的布局由其在适配器中提供的不同值定义,在RecyclerView中会自动地将它们绑定到各自的项视图中。
2.自定义Item View
可以通过state_pressed、state_focused、state_checked来自定义Item View的background。
3.添加头部和底部的View
RecyclerView提供了一个RecyclerView.AdapterWrapper和一个RecyclerView.ItemDecoration类来支持addHeaderView()、addFooterView()方法。添加这些View仅需要告诉RecyclerView初始位置即可。
五、结论
RecyclerView是一个非常强大、灵活、可扩展的控件,可以完美地替代ListView、GridView等控件,并且提供了更好的性能和适配器,可以处理大量数据,与时俱进的数据和视图绑定模式在滚动过程中以较高效率处理item控件的回收与重用,系统可以在实现流畅垂直对齐的同时也可以创建复杂网格,为用户提供更好的交互体验。