RecyclerView中使用DataBinding
下面我们看下在RecycerView中的数据绑定如何使用,整体效果如图:
1、在data标签中定义variable
2、在布局文件中引用
在XML中定义了adapter、layoutManger、itemCount的数量、以及item的布局文件引用。
3、recyclerView内部的item布局文件也是dataBinding的形式
添加layout、data属性
可以看到在布局文件中使用了dataBinding的写法来为item添加数据,并且使用到了自定义的一个类叫BdTool.kt,因此在开始需要使用import引入进来
android:text="@{BdToolKt.getTitle(info.text)}"
android:textColor="@{info.type}"
4、adapter的写法没有什么区别
class BdAdapter : RecyclerView.Adapter() {
private val mList = mutableListOf()
init {
for (i in 0..5) {
mList.add(ItemBean(i, "艾特木 $i"))
}
}
class ItVH(private val binding: ItemRvBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(bean: ItemBean) {
binding.info = bean
binding.executePendingBindings()
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItVH {
return ItVH(ItemRvBinding.inflate(LayoutInflater.from(parent.context), parent, false))
}
override fun getItemCount() = mList.size
override fun onBindViewHolder(holder: ItVH, position: Int) {
holder.bind(mList[position])
}
}
data class ItemBean(val type: Int, val text: String)
5、在activity中的使用
adapter = BdAdapter()
info = ItemBean(0, "include 的item")
完整项目代码