RecyclerView使用方法

来源:互联网 发布:徐克版笑傲江湖 知乎 编辑:程序博客网 时间:2024/06/06 04:41
RecyclerView (回收、复用、高度解耦),能实现比ListView、GridView更丰富的效果

使用步骤:

Step1 : 布局中添加RecyclerView

Step2 : 获取RecyclerView实例

Step3 : 设置布局管理器(控制显示的方式:LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager)

Step4 : 设置数据Adapter

Step5 : 添加Item添加、删除动画(setItemAnimator)

Step6 : 添加分割线(addItemDecoration)

Step7 : 添加监听事件(onClick等,可直接再onBindViewHolder中直接添加)


Step4  :  自定义Adapter:

/** * 继承RecyclerView.Adapter * 1.重写onCreateViewHolder()返回ItemViewHolder * 2.重新onBindViewHolder()绑定数据 * 3.重写getItemCount()返回记录个数 * 4.自定义ItemViewHolder继承ViewHolder *  * @see 如果需要为RecylerView添加Header或者Footer,需要额外处理以下细节: * 1.重写getItemViewType()方法,用于区分Item类型 * 2.onCreateViewHolder()、onBindViewHolder()需要区分处理 * 3.getItemCount()返回srcDatas.size()+headerCount + footerCount *  * @author 健身小码哥 * */public class CustomAdapter extends RecyclerView.Adapter<DataAdapter.CustomViewHolder>{@Overridepublic CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType){CustomViewHolder holder = new CustomViewHolder(LayoutInflater.from(context).inflate(R.layout.item, parent,    false));    return holder;}@Overridepublic void onBindViewHolder(CustomViewHolder holder, int position){    holder.titleTv.setText(mDatas.get(position));    holder.headImg.setImageResource(R.drawable.head);}@Overridepublic int getItemCount(){    return mDatas.size();}class CustomViewHolder extends ViewHolder{    TextView titleTv;    ImageView headImg;    public MyViewHolder(View view)    {super(view);titleTv = (TextView) view.findViewById(R.id.title);headImg = (ImageView) view.findViewById(R.id.img_head)    }}}


Step5  :  添加Item添加删除效果(addItemDecoration)

*可以参考  RecyclerViewItemAnimators , 提供了丰富的效果。

Step6  :  自定义分割线

*继承ItemDecoration,并根据布局的特点进行重写 (系统暂时未提供默认的实现类)

*可参考 ItemDecoration的几种实现