滚动在RecyclerView中插入的项目

问题描述 投票:0回答:2

我做了一个由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);

我究竟做错了什么?这种方法对吗?

java android android-recyclerview
2个回答
0
投票

如果此位置(远)超出显示区域,则不会绑定ViewHolder。在这里使用RecyclerView.scrollToPosition(int position)

A.scrollToPosition(positionOfB)


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)
    }
© www.soinside.com 2019 - 2024. All rights reserved.