滚动到RecyclerView中插入的项目

时间:2019-01-17 14:51:12

标签: java android android-recyclerview

我制作了一个RecylcerView (A),其中包含另一个ViewHolder (B)。 当在 B 中插入/修改(RecyclerView / notifyItemInserted())项时,我希望 A 滚动到 B 刚插入/修改的项目出现在屏幕上。

我在 A 中处于 B 的位置,并得到 B ,然后检索最后一个元素,即一个刚刚插入。当我调用 findViewHolderForAdapterPosition 时,我得到notifyItemChanged()

我的代码:

NullPointerExeption

我在做什么错?这种方法对吗?

2 个答案:

答案 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)
    }