我正在使用 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/

10-10 16:47