一、概述
记得好久以前针对ListView类控件写过一篇打造万能的ListView GridView 适配器,如今RecyclerView异军突起,其Adapter的用法也与ListView类似,那么我们也可以一步一步的为其打造通用的Adapter,使下列用法书写更加简单:
- 简单的数据绑定(单种Item)
- 多种Item Type 数据绑定
- 增加onItemClickListener , onItenLongClickListener
- 优雅的添加分类header
二、使用方式和效果图
在一步一步完成前,我们先看下使用方式和效果图:
(1)简单的数据绑定
首先看我们最常用的单种Item的书写方式:
1 2 3 4 5 6 7 8 |
mRecyclerView.setAdapter(new CommonAdapter(this, R.layout.item_list, mDatas) { @Override public void convert(ViewHolder holder, String s) { holder.setText(R.id.id_item_list_title, s); } }); |
是不是相当方便,在convert方法中完成数据、事件绑定即可。
(2)多种ItemViewType
多种ItemViewType,正常考虑下,我们需要根据Item指定ItemType,并且根据ItemType指定相应的布局文件。我们通过MultiItemTypeSupport
完成指定:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
MultiItemTypeSupport multiItemSupport = new MultiItemTypeSupport() { @Override public int getLayoutId(int itemType) { //根据itemType返回item布局文件id } @Override public int getItemViewType(int postion, ChatMessage msg) { //根据当前的bean返回item type } } |
剩下就简单了,将其作为参数传入到MultiItemCommonAdapter
即可。
1 2 3 4 5 6 7 8 |
mRecyclerView.setAdapter(new SectionAdapter(this, mDatas, multiItemSupport) { @Override public void convert(ViewHolder holder, String s) { holder.setText(R.id.id_item_list_title, s); } }); |
贴个效果图:
(3)添加分类header
其实属于多种ItemViewType的一种了,只是比较常用,我们就简单封装下。
依赖正常考虑下,这种方式需要额外指定header的布局,以及布局中显示标题的TextView了,以及根据Item显示什么样的标题。我们通过SectionSupport
对象指定:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
SectionSupport sectionSupport = new SectionSupport() { @Override public int sectionHeaderLayoutId() { return R.layout.header; } @Override public int sectionTitleTextViewId() { return R.id.id_header_title; } @Override public String getTitle(String s) { return s.substring(0, 1); } }; |
3个方法,一个指定header的布局文件,一个指定布局文件中显示title的TextView,最后一个用于指定显示什么样的标题(根据Adapter的Bean)。
接下来就很简单了:
1 2 3 4 5 6 7 8 |
mRecyclerView.setAdapter(new SectionAdapter(this, R.layout.item_list, mDatas, sectionSupport)ass="crayon-h"> R.layout.item_list, mDatas, sectionSupport)tView GridView 适配器,如今RecyclerView异军突起,其Adapter的用法也与ListView类似,那么我们也可以一步一步的为其打造通用的Adapter,使下列用法书写更加简单:
二、使用方式和效果图在一步一步完成前,我们先看下使用方式和效果图: (1)简单的数据绑定首先看我们最常用的单种Item的书写方式:
是不是相当方便,在convert方法中完成数据、事件绑定即可。 (2)多种ItemViewType多种ItemViewType,正常考虑下,我们需要根据Item指定ItemType,并且根据ItemType指定相应的布局文件。我们通过
剩下就简单了,将其作为参数传入到
贴个效果图: (3)添加分类header其实属于多种ItemViewType的一种了,只是比较常用,我们就简单封装下。 依赖正常考虑下,这种方式需要额外指定header的布局,以及布局中显示标题的TextView了,以及根据Item显示什么样的标题。我们通过
3个方法,一个指定header的布局文件,一个指定布局文件中显示title的TextView,最后一个用于指定显示什么样的标题(根据Adapter的Bean)。 接下来就很简单了:
|