我制作了一个RecylcerView
(A),其中包含另一个ViewHolder
(B)。
当在 B 中插入/修改(RecyclerView
/ notifyItemInserted()
)项时,我希望 A 滚动到 B 刚插入/修改的项目出现在屏幕上。
我在 A 中处于 B 的位置,并得到 B ,然后检索最后一个元素,即一个刚刚插入。当我调用 findViewHolderForAdapterPosition 时,我得到notifyItemChanged()
。
我的代码:
NullPointerExeption
我在做什么错?这种方法对吗?
答案 0 :(得分:0)
如果该位置(远)超出显示区域,则它将不会绑定ViewHolder
。只需在此处使用RecyclerView.scrollToPosition(int position)
。
像A.scrollToPosition(positionOfB)
答案 1 :(得分:0)
我在Recycler视图上使用布局管理器
fun setData(listItems: List<ItemDataModel>) {
customAdapter.clear()
customAdapter.addAll(listItems)
(layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(customAdapter.itemCount - 1, 0)
}
-----自定义适配器方法----
fun clear() {
items.clear()
notifyDataSetChanged()
}
fun addAll(items: List<T>) {
this.items.addAll(items)
notifyItemRangeInserted(this.items.lastIndex, items.size)
}