写点什么

我们可以把 Adapter 精简到什么地步

用户头像
mengxn
关注
发布于: 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
用户头像

mengxn

关注

还未添加个人签名 2018.07.25 加入

还未添加个人简介

评论

发布
暂无评论
我们可以把Adapter精简到什么地步