[英]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.