介绍功能
使用
类SuperAdapter的作用
示例
这篇文章主要讲解了“Android如何实现RecyclerView适配器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android如何实现RecyclerView适配器”吧!
源码地址:GitHub
功能
- <李>
无需继承适配器,无需判断项目类型。
李> <李>支持页头和页脚。
李> <李>支持自动展示空数据界面。李李
> <>通过芬兰湾的科特林的λ大量缩减代码。李李
> <>支持全局项目类型
李> <李>支持diff刷新
使用
添加依赖
implementation “com.dengzii.adapter: latestVersion"美元;
通过λ快速使用,这里就快速绑定了四种产品的布局。
adapter.setEnableEmptyView(真的,,SuperAdapter.Empty ()) adapter.addViewHolderForType(R.layout.item_empty) { {,onBindData , _, _ →, findView<才能;View> (R.id.bt_refresh) .setOnClickListener {, ,,//refresh your 数据 ,,} ,} } adapter.setHeader(“却;能够is header",, R.layout.item_header), { {,onBindData ,数据,_ → findView<才能;TextView> (R.id.tv_title) .text =数据 ,} } adapter.setFooter(自然(“This",,“女儿,,,“footer"),, R.layout.item_section), { {,onBindData ,数据,_ → findView<才能;TextView> (R.id.tv_title) .text =, data.joinToString (“,“) ,} } adapter.addViewHolderForType (R.layout.item_header), { ,val title =, findView (R.id.tv_title) ,val content  by lazyFindView< TextView> (R.id.tv_content) {,onBindData ,数据,_ → title.text 才能=data.title content.text 才能=data.content ,} }
或者不使用λ
val adapter =, SuperAdapter(自然(“Item  1“,“Item 2,,,“Item 3,)) adapter.addViewHolderForType(字符串::class.java, ItemViewHolder:: class.java) 时间=recyclerView.layoutManager LinearLayoutManager(这) 时间=recyclerView.adapter 适配器 class ItemViewHolder(父:ViewGroup),:, AbsViewHolder(父),{ ,private lateinit  var mTextView: TextView ,override fun  onCreate(父:,ViewGroup), { 时间=mTextView 才能;TextView(上下文) 时间=mTextView.layoutParams 才能;getLayoutParam ( ,,,,,ViewGroup.LayoutParams.WRAP_CONTENT, ,,,,ViewGroup.LayoutParams.WRAP_CONTENT ,,,) ,,setContentView (mTextView) ,} ,override fun  onBindData(数据:字符串,位置:,Int), { 时间=mTextView.text 才能;数据 ,} }
无需继承SuperAdapter,但需要为每种物品实现并继承继承抽象类AbsViewHolder,并在改类中设置布局和绑定看来,数据。
AbsViewHolder代表一种物品类型,其中泛型T为该项目对应的实体类
类SuperAdapter的作用
适配器构造器
public SuperAdapter (Object> List<数据)
绑定ViewHolder到实体类型
public void addViewHolderForType (Class<?祝辞,类型,Class<?, extends AbsViewHolder>,持有人)
设置项点击事件
, public void setOnItemClickListener (OnItemClickListener 侦听器) , ,public interface  OnItemClickListener { void 才能;onItemClick (View v, Object itemData,, int 位置); 以前,}>类AbsViewHolder的作用
每个AbsViewHolder表示一种物品类型。
构造器,必须重写带参数构造器,否则无法使用,父母与适配器# onCreateViewHolder中父一致
, public AbsViewHolder (@NonNull ViewGroup 父母)创建项目时调用>,public abstract void onCreate (@NonNull ViewGroup 父);
绑定数据
public abstract void onBindData (@NonNull T 数据,int 位置),
示例
设置适配器
var 数据:List… val adapter =, SuperAdapter(数据)//,绑定数据类到,ViewHolder adapter.addViewHolderForType(项目::class.java, ItemViewHolder:: class.java) adapter.addViewHolderForType(标题::class.java, HeaderViewHolder:: class.java) adapter.addViewHolderForType(部分::class.java, SectionViewHolder:: class.java) adapter.setOnItemClickListener (object : SuperAdapter.OnItemClickListener { ,override fun  onItemClick (v:视图?,,itemData:,吗?,,位置:,Int), { ,} }) 时间=recyclerView.layoutManager LinearLayoutManager(这) null null null null null null null null null null null null null null null null null null Android如何实现RecyclerView适配器