我们可以把 Adapter 精简到什么地步
发布于: 2020 年 10 月 15 日
如果Adapter简化到如下形式,是不是很方便?
recyclerView.adapter = SingleAdapter<String>(R.layout.item_main_1) { holder -> // holder.data 数据源 // holder.setXXX 快捷设置数据 // holder.getView(id) 获取指定ID的View // way 1 holder.itemView.contentTv.text = holder.data // way 2 holder.setText(R.id.contentTv, holder.data) // way 3 holder.getView<TextView>(R.id.contentTv).text = holder.data // do something}
我们需要处理的仅仅是把数据设置到对应View上。
如果你感兴趣,很简单,一键集成。
implementation 'me.codego:adapter:1.0.3'
当然,如果你有更高的需要,可以直接继承`BetterAdapter`,其中已经实现了很多数据操作方法,可直接使用。
class AnimalAdapter : BetterAdapter<Animal>() { companion object { private const val TYPE_DOG = 1 private const val TYPE_CAT = 2 } // 自定义规则进行区分类型 override fun getItemViewType(position: Int): Int { return when (getItem(position)) { is Dog -> TYPE_DOG else -> TYPE_CAT } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder<Animal> { return when (viewType) { TYPE_DOG -> DotViewHolder(inflateChildView(parent, R.layout.item_main_1)) else -> CatViewHolder(inflateChildView(parent, R.layout.item_main_2)) } } class DotViewHolder(view: View) : ViewHolder<Animal>(view) { // 绑定数据 override fun bind(data: Animal) { super.bind(data) setText(R.id.contentTv, data.getName()) } } class CatViewHolder(view: View) : ViewHolder<Animal>(view) { // 绑定数据 override fun bind(data: Animal) { super.bind(data) setText(R.id.adTv, data.getName()) } }}
划线
评论
复制
发布于: 2020 年 10 月 15 日阅读数: 29
版权声明: 本文为 InfoQ 作者【mengxn】的原创文章。
原文链接:【http://xie.infoq.cn/article/8357660a3ec511fa66cbde620】。文章转载请联系作者。
mengxn
关注
还未添加个人签名 2018.07.25 加入
还未添加个人简介
评论