滚动在RecyclerView中插入的项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滚动在RecyclerView中插入的项目相关的知识,希望对你有一定的参考价值。
我做了一个由RecylcerView
组成的ViewHolder
(A),其中包含另一个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)
另一答案
我在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)
}
以上是关于滚动在RecyclerView中插入的项目的主要内容,如果未能解决你的问题,请参考以下文章
将水平 RecyclerView 作为项目放置在垂直 RecyclerView 中时的自动滚动问题
我应该使用 ScrollView 还是 RecyclerView 在片段中滚动?