kotlin 如何在适配器类中获取'layoutInflator'?

yb3bgrhw  于 2023-01-05  发布在  Kotlin
关注(0)|答案(1)|浏览(198)

我有一个用例...
我想得到layoutInflator来绑定嵌套的recyclerView的不同视图。有什么最好的方法来得到layoutInflator吗?
我想从onBindViewHolder那里得到它

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder. //something?
}
hc2pp10m

hc2pp10m1#

您不应该在x1m0 n1 a中膨胀任何内容-onCreateViewHolder是您设置显示列表项的ViewHolder对象的地方,包括膨胀其布局视图。onBindViewHolder是您与这些视图交互的地方,以显示当前项的适当数据。
那些创建的ViewHolder会被重用,所以你不必为每个条目膨胀视图,你只需创建一些ViewHolder,当你滚动列表时,它们会被交换,这就是为什么它被称为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)
    }
}

这样,传入onBindViewHolderViewHolder就有了一个可以访问的textView字段,例如,设置其文本内容以显示当前项的数据(如果使用视图绑定,则可以存储对绑定对象的引用,并通过holder.binding.textView等访问视图)
我不知道你在用嵌套的RecyclerView做什么,但原理是一样的--主RV中的每个ViewHolder都将包含另一个RV,具有自己的适配器和数据集,在onCreateViewHolder中创建并初始化。如果要更改其内容(因为您要在主RV列表中显示特定的项目)您可能希望在嵌套RV的适配器上添加setData函数,以更改其数据集并刷新显示。在onCreateViewHolder内部,让适配器在需要时处理充气的事情

相关问题