我正在使用 Parse 对象 id 创建一个哈希码,但显然这有一些可能会爆炸。
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<MyParseObject> mObjects;
...
@Override
public long getItemId(int position) {
return mObjects.get(position).getObjectId().hashCode();
}
}
最佳答案
不特定于 Parse,但您可以从对象 id 轻松创建稳定的 id:
public class StableNumericalIdProvider {
private int idProvider;
private final Map<String, Integer> numericalIds = new HashMap<>();
public int id(String stringId) {
Integer numericalId = numericalIds.get(stringId);
if (numericalId == null) {
numericalId = idProvider++;
numericalIds.put(stringId, numericalId);
}
return numericalId;
}
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<MyParseObject> mObjects;
private StableNumericalIdProvider idProvider;
@Override
public long getItemId(int position) {
return idProvider.id(mObjects.get(position).getObjectId());
}
}
(附带说明,您是否需要实现
getItemId
?如果您的数据集没有变化,则不必)关于android - 是否有一些推荐的方法来为 ParseObject 创建一个 id 以在 RecyclerView 中使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38400641/