Android 在第一个索引处添加项目并调用notifydatasetchange后,如何在RecyclerView中保持滚动位置
我正在使用RecyclerView,在第一个项目之前添加项目,滚动位置向上移动到新添加的第一个项目。在第一个索引处添加新项目并调用Android 在第一个索引处添加项目并调用notifydatasetchange后,如何在RecyclerView中保持滚动位置,android,android-listview,android-recyclerview,Android,Android Listview,Android Recyclerview,我正在使用RecyclerView,在第一个项目之前添加项目,滚动位置向上移动到新添加的第一个项目。在第一个索引处添加新项目并调用notifydatasetchange()后,如何保持滚动位置 这就是我在适配器中所做的 mCurrentFragment.items.addAll(0, createLineItems(dataArrayList)); notifyDataSetChanged(); 有什么建议吗 有两种选择: 使用更复杂版本的通知 List newData =
notifydatasetchange()
后,如何保持滚动位置
这就是我在适配器中所做的
mCurrentFragment.items.addAll(0, createLineItems(dataArrayList));
notifyDataSetChanged();
有什么建议吗 有两种选择:
通知
List newData = createLineItems(dataArrayList);
mCurrentFragment.items.addAll(0, newData);
notifyItemRangeInserted(0, newData.size());
public long getItemId(int位置)
,使其返回有意义的值,并调用sethasstableId(true)代码>在上面
你可以根据你插入的物品数量来计算,然后手动设置滚动值。我会试试的,thx@Budius你说有意义是什么意思?这是否意味着每个物品都有一个唯一的id?@HamzehSoboh我的意思就是这个。如果您的ID只是位置(例如),它将不起作用。它必须是(例如)用户ID或照片ID,因此,当视图位置更改时,ID仍然绑定到它所处理的数据
notifyItemRangeInserted
,而不是setHassTableID
,尽管getItemId
为该项目的日期返回了getTime()
,这是唯一的。