繁体   English   中英

滚动到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM