and*_*per 6 android uniqueidentifier android-recyclerview
假设我有一个RecyclerView,其中的项目只有在你看到2个ID时才能是唯一的,而不仅仅是其中一个.
第一个ID是主要的.通常没有2个项目具有相同的主ID,但有时可能会发生,这就是存在辅助ID的原因.
在我的
RecyclerView适配器需要返回"long"类型:
克服这个问题的简单方法是使用HashMap和计数器.
HashMap将包含组合键,值将是应返回的id.在新的组合密钥的情况下,计数器用于生成下一个id.在这种情况下,组合键可以是"配对"类.
假设RecyclerView数据中的每个项目都有2个长型键:
HashMap<Pair<Long,Long>,Long> keyToIdMap=new HashMap();
long idGenerator=0;
Run Code Online (Sandbox Code Playgroud)
这是在getItemId中做的事情:
Pair<Long,Long> combinedKey=new Pair(item.getPrimaryId(), item.getSecondary());
Long uniqueId=keyToIdMap.get(combinedKey);
if(uniqueId==null)
keyToIdMap.put(combinedKey,uniqueId=idGenerator++);
return uniqueId;
Run Code Online (Sandbox Code Playgroud)
这具有占用越来越多内存的缺点.虽然不多,而且它非常小并且与您已有的数据成比例,但仍然......
但是,这样做的好处是能够处理所有类型的ID,并且您可以根据需要使用更多ID(只需要与Pair类似的东西).
另一个优点是它将使用从0开始的所有ID.
是否有更好的方法来实现这一目标?
也许是一种数学方式?我记得我过去曾学过使用素数来完成类似的任务.它会以某种方式在这里工作吗?
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |