我有一个 RealmResults 对象,它保存 .where.findAll() 查询的输出。我在 RecyclerView 中显示该对象的内容,但由于 RealmResults 对象的内容是静态的,因此每次打开 RecyclerView 时它都会显示相同的记录集。我想打乱(随机化)RealmResults 的内容,以便可以在 RecyclerView 中显示 RealmResults 中的不同值。请建议我执行相同操作的一些可能方法。
最佳答案
您不应该随机化列表本身,您应该随机化对它的访问(索引)。
构建一个包含 [0, n-1]
索引的列表
List<Integer> indices = new ArrayList<>(realmResults.size());
for(int i = 0; i < realmResults.size(); i++) {
indices.add(i);
}
随机播放
Collections.shuffle(indices);
然后,当您选择 View 持有者数据时,索引 Realm 结果将带有索引随机位置
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(holder instanceof YourHolder) {
YourHolder yourHolder = (YourHolder) holder;
RealmData realmData = realmResults.get(indices.get(position));
//init data for your holder
}
}
关于android - 如何打乱 RealmResults 对象的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36241590/