在第一个索引处添加项目并调用notifydatasetchange后,如何在RecyclerView中保持滚动位置

时间:2015-10-08 09:54:39

标签: android android-listview android-recyclerview

我正在使用RecyclerView,我在第一个项目之前添加项目,滚动位置向上移动到新添加的第一个项目。如何在第一个索引处添加新项目并调用notifydatasetchange()后保持我的滚动位置?

这就是我在我的适配器中所做的事情

    mCurrentFragment.items.addAll(0, createLineItems(dataArrayList));

    notifyDataSetChanged();

有什么建议吗?

1 个答案:

答案 0 :(得分:20)

有两种选择:

  1. 使用更复杂的notify

    版本
    List newData = createLineItems(dataArrayList);
    mCurrentFragment.items.addAll(0, newData);
    notifyItemRangeInserted(0, newData.size());
    
  2. 使用稳定ID 。在您的适配器上覆盖public long getItemId (int position),使其返回 MEANINGFUL 值并在其上调用setHasStableIds(true);