[英]Notify adapter on item inserted in RoomDatabase and update the recyclerView
[英]Scroll on item inserted in RecyclerView
我已經制作了一個由ViewHolder
組成的RecylcerView
(A) , ViewHolder
包含另一個RecyclerView
(B) 。 當插入/修改B中的項目( notifyItemInserted()
/ notifyItemChanged()
)時,我希望A滾動直到屏幕上剛插入/修改的B項目出現。
我在A中擁有B的位置,因此我得到了B,並且檢索了最后一個元素,即剛剛插入的元素。 當我調用findViewHolderForAdapterPosition時,我得到了NullPointerExeption
。
我的代碼:
RecyclerView B = ((MyAdapter.MyViewHolder)A
.findfindViewHolderForAdapterPosition(posB))
.getRecyclerViewB();
B.scrollToPosition(B.getAdapter().getItemCount()-1);
我究竟做錯了什么? 這種方法對嗎?
如果此位置(遠)超出顯示區域,則它將沒有綁定ViewHolder
。 只需在這里使用RecyclerView.scrollToPosition(int position)
。
像A.scrollToPosition(positionOfB)
我在“回收站”視圖上使用布局管理器
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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.