【发布时间】:2021-01-15 07:43:54
【问题描述】:
我正在尝试使用数据绑定构建自定义 Recycler 视图适配器,我想知道是否可以从绑定对象获取布局资源 ID,而不是每次都传递布局资源 给构造函数
class BaseAdapter<dataType,binder:ViewDataBinding>(val data:ArrayList<dataType>,@LayoutRes val resource:Int,val onBind: (binder, dataType, Int) -> Unit]) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseHolder {
val v = DataBindingUtil.inflate<binder>(
LayoutInflater.from(parent.context),
resource,
parent,
false
)
return BaseHolder(v)
}
override fun onBindViewHolder(holder: BaseHolder, position: Int) {
onBind(holder.binding, items[position], position)
}
}
在我的活动中,我会这样使用它
BaseAdapter<String,MatchItemBinding>(arrayListOf(""),R.layout.match_item)
但我希望做这样的事情:
BaseAdapter<String,MatchItemBinding>(arrayListOf(""), MatchItemBinding.SOMETHING_TO_GET_LAYOUT_LINKED_WITH_THIS_OBJECT)
【问题讨论】:
-
ViewHolder 需要它吗?
binder.root在那里工作,例如RecyclerView.ViewHolder(binder.root) -
在初始化活页夹对象之前,我需要它用于 onCreateViewHolder:像这样 DataBindingUtil.inflate
( LayoutInflater.from(parent.context), R.layout............ ...,父母,假) -
您可以包含 ViewHolder 类的代码吗?包括 onCreateViewHolder
-
完成,使用持有人代码更新问题
标签: android kotlin android-databinding