RecyclerView通用adapter以及item点击事件的实现

来源:互联网 发布:象棋软件下载 编辑:程序博客网 时间:2024/06/05 09:25
  今天实现内容如下:

1.实现recyclerview通用的adapter CommonAdapter
2.实现recyclerview item的点击事件

先上效果图
viewpager+fragment+viewpagerindicator实现整体框架,上图中下面的类似GridView的图片列表为要实现效果。

首先定义一个供CommonAdapter使用的ViewHolder
代码1(ViewHolder)

其中get方法先得到itemView,再通过ViewHolder构造器得到ViewHolder实例;
getView通过itemView.findViewById(子view的id)得到itemView中包括的子view;
getConvertView方法得到itemView(在get方法中将得到的itemVIew传入了ViewHolder的构造器,而构造器总将itemView的值赋给了成员变量mConvertView);

代码2 (CommonFragmentAdapter:因项目中为为Fragment使用的adapter,但实际上是通用的)
在onCreateViewHolder中通过VIewHolder的get方法得到ViewHolder实例,通过ViewHolder的getConvertView方法得到recyclerview itemView,
给itemView设置监听事件,最后返回ViewHolder实例;

在onBindViewHolder方法中调用了当前CommonFragmentAdapter中定义的抽象方法convert,并在此处得到当前itemView,并将position作为setTag
方法的实参传入,此tag值用来确定点击了哪一个item,convert方法的作用在于实例化adapter时回掉此方法,此方法的参数即为当前ViewHolder实例
和当前数据集合中的数据。

定义一个OnRecyclerView接口,接口里定义一个onItemClick方法,声明一个接口变量mOnRecyclerViewListener,在itemView的onClick方法中,如果
mOnRecyclerView变量不为空,则调用mOnRecyclerView.onItemClick,并将当前itemView和getTag得到的position值传入onItemClick方法。最后定义
一个setOnItemClickListener方法方便调用。这样就实现了CommonAdapter的封装和点击事件。

代码3 (fragment中使用)
实例化一个CommonFragmentAdapter,在回调方法convert中处理业务逻辑,给recyclerView设置布局管理器,此处为GridLayoutManager,将CommonFragmentAdapter实例设置给recyclerview,itemView点击事件通过
CommonFragmentAdapter.setOnItemCLickListener来实现。

程序员的魅力在于分享
参考了前辈鸿洋的博客
原文链接 http://blog.csdn.net/lmj623565791/article/details/51118836
0 0