android - 如何打乱 RealmResults 对象的内容

标签 android android-recyclerview realm

我有一个 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/

相关文章:

java - 在平板电脑方向更改应用程序崩溃

swift - Realm Swift - 过滤关系的第一个元素

objective-c - 带有 NSString 数组的 RLMObject

android - 如何在 Android 上禁用 Adob​​e AIR 应用程序的后台执行?

android - 更改和删除的动画不适用于 RecyclerView

android - Android App因违反《内容政策》中的“禁止操作”条款而被拒绝

Android Recyclerview 向下滚动时滞后

android - 如果更改变量类型 - Realm ,是否必须迁移?

android - ScrollView 中的可缩放 TextView

android - Ionic 3 未处理的PromiseRejection警告: Unhandled promise rejection