phe*_*eww 3 android listview onitemclicklistener android-recyclerview
我是android新手,在RecyclerView中单击一个项目时卡住了,该项目的数据集已更改并且位置与SQLite中的ID不匹配。我知道我们可以使用'setHasStableID'获得唯一ID,但我很少关于在哪里需要设置此“ setHasStableId(true)”条件感到困惑?这是如何运作的?
小智 8
setHasStableIds(true)将应用于RecylerView的适配器。
adapter.setHasStableIds(true);
Run Code Online (Sandbox Code Playgroud)
同样,要使此方法生效,您必须必须重写getItemId(int position),以返回针对该位置上的项目的已识别的long。我们需要确保没有其他具有相同返回ID的商品数据。该ID可以是数据库中的ID,该ID对每个项目都是唯一的,并且不会在整个过程中保持不变。
//Inside the Adapter class
@Override
public long getItemId(int position) {
return itemList.get(position).getId();
}
Run Code Online (Sandbox Code Playgroud)
这将减少对数据集通知的闪烁影响,该通知仅修改有更改的项目。
最重要的是,它将在项目位置更改时添加酷炫的动画!
为了解决闪烁问题,我们需要为同一个项目重用相同的 ViewHolder 和视图。因为
所以解决方案是:-
setHasStableIds(true) :-
setHasStableIds(true);在 RecyclerView.Adapter 中设置。覆盖 getItemId(int position) :-
然后我们必须覆盖getItemId(int position),以返回位置处项目的识别长度
我们需要确保没有具有相同返回 id 的不同项目数据。
| 归档时间: |
|
| 查看次数: |
4935 次 |
| 最近记录: |