-
慕运维8079593
最初将其设置为零lastFirstVisiblePosition = 0;您可以在滚动条上存储滚动位置并像这样设置滚动位置。((LinearLayoutManager) rv.getLayoutManager()).scrollToPosition(lastFirstVisiblePosition);如果这不起作用尝试下面((LinearLayoutManager) rv.getLayoutManager()).scrollToPositionWithOffset(lastFirstVisiblePosition,0)
-
弑天下
重写 onAttachedToRecyclerView 以获取适配器类中的 RecyclerView 引用 @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); mRecyclerView = recyclerView; }重写 onViewRecycled 以获取 lastVisiblePosition ,当您再次重新加载回收器视图时可以使用它@Override public void onViewRecycled(SiteHolder viewHolder) { lastVisiblePosition = ((GridLayoutManager) mRecyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition(); }无论你在哪里重新加载数据(作为 Arraylist 的 setter 或任何方式),首先调用notifyDataSetChanged();进而((GridLayoutManager) mRecyclerView.getLayoutManager()).scrollToPosition(lastVisiblePosition);这将确保先重新加载数据,然后再滚动
-
慕妹3146593
mAdapter.notifyDataSetChanged(); 将通知您的整个列表,这将使您的列表滚动到顶部位置,因此使用 notifyItemChanged(intposition),它将仅更新该位置,如果您想通知某个范围,请使用 notifyItemRangeChanged(position,size)
-
千万里不及你
你不需要手动保存实例,只需确保所有视图在 xml 布局中都有唯一的 id,android 就会为你做这件事。
-
翻翻过去那场雪
你可以使用这个方法mAdapter.notifyItemRangeChanged(position, list.size());当您在适配器列表中添加新元素时,请使用此方法来通知您适配器。它将保留当前位置并在最后一项下方添加所有新元素。