[英]How to get `layoutInflator` in adapter class?
我有一个用例...
我想让layoutInflator
为嵌套的 recyclerView 绑定不同的视图。 有什么最好的方法来获取layoutInflator
吗?
我试图从onBindViewHolder
获取它
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder. //something?
}
您不应该在onBindViewHolder
中膨胀任何东西 - onCreateViewHolder
是您设置显示列表项的ViewHolder
object 的地方,包括膨胀其布局视图。 onBindViewHolder
是您与这些视图交互的地方,以显示当前项目的适当数据。
那些创建的ViewHolder
会被重用,因此无需为每个项目扩充视图,您只需创建少量ViewHolder
,它们会在您滚动列表时交换。 VHs 池的回收就是它被称为RecyclerView
的原因。
通常,您会在每个ViewHolder
中存储对膨胀视图的引用,如本例所示:
/**
* Provide a reference to the type of views that you are using
* (custom ViewHolder)
*/
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView: TextView
init {
// Define click listener for the ViewHolder's View
textView = view.findViewById(R.id.textView)
}
}
这样,传递给ViewHolder
的onBindViewHolder
就有一个您可以访问的textView
字段,例如,设置其文本内容以显示当前项目的数据。 (如果您使用的是视图绑定,则可以改为存储对绑定 object 的引用,并通过holder.binding.textView
等访问视图)
我不知道你在用嵌套的RecyclerView
做什么,但原理是一样的——主 RV 中的每个ViewHolder
都将包含另一个 RV,它有自己的适配器和数据集,在onCreateViewHolder
中创建和初始化。 如果要更改其内容(因为要在主 RV 列表中显示特定项目),您可能需要在嵌套 RV 的适配器上添加一个setData
function 以更改其数据集并刷新显示。 让适配器在需要时处理膨胀的东西,在onCreateViewHolder
中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.