【发布时间】:2018-10-26 10:30:34
【问题描述】:
我正在使用 GridLayoutManager,但遇到了意外的 RecyclerView 行为。如果 spanCount 大于 4,则 RecyclerView 在滚动时不断地重新创建 ViewHolders。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = GridLayoutManager(this, 7)
recyclerView.adapter = Adapter()
}
private class Adapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
//continuously invokes while scrolling:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val view:View = TextView(parent.context).apply {
text = "Hello!"
}
return object : RecyclerView.ViewHolder(view) {}
}
override fun getItemCount(): Int = 3500
override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, position: Int) {}
}
如何解决并强制 RecyclerView.Adapter 重用 ViewHolders?
【问题讨论】:
-
我认为你不应该在 onCreateViewHolder 中创建 Text 对象。你是一个 ViewHolder 类
-
@Vitali 在
onBindViewHolder方法中似乎缺少代码。您能否完成代码,以便我们了解这里发生了什么?目前,由于理想情况下它是空的,因此您不会看到任何应该显示的内容。 -
查看本教程以获得更好的理解。 android.jlelse.eu/…
标签: android android-recyclerview android-viewholder recyclerview-layout gridlayoutmanager