我是android的新手,当我点击RecyclerView中的一个项目时,数据集发生了变化,位置与SQLite中的ID不匹配。我知道我们可以使用'setHasStableID'来获取唯一ID我有点困惑,我需要在哪里设置这个'setHasStableId(true)'条件?这是如何运作的?
答案 0 :(得分:6)
setHasStableId(true)将应用于RecylerView的适配器。
adapter.setHasStableId(true);
要使此设置生效,您还必须覆盖 getItemId(int position),以返回已确定的位置长的项目。我们需要确保没有其他具有相同返回ID的商品数据。 该ID可以是数据库中的ID,对于每个商品来说都是唯一的,并且不会在整个过程中保持不变。
//inside the adapter class
@Override
public long getItemId(int position) {
return itemList.get(position).getId();
}
这将减少对数据集通知的闪烁影响,该通知仅修改具有更改的项目。
最重要的是,它将在项目位置更改中添加超酷的动画!
答案 1 :(得分:6)
要解决闪烁问题,我们需要重复使用相同的ViewHolder并查看同一项目。因为
所以解决方案是:-
setHasStableIds(true):-
setHasStableIds(true);
。覆盖getItemId(int位置):-
然后我们必须覆盖 getItemId(int position)
,以返回
确定了该商品在位置上的长度
我们需要确保在那里 没有具有相同返回ID的其他商品数据。
答案 2 :(得分:0)
对于新读者:
请注意,对于Paging 3.0库,稳定ID是不必要的,因此不受支持。
参考:https://developer.android.com/reference/kotlin/androidx/paging/PagingDataAdapter#getitemid