android - 如何在 FirestoreRecyclerAdapter 中添加 2 个不同的查询?

标签 android firebase firebase-realtime-database android-recyclerview google-cloud-firestore

我有两个问题:

Query firstQuery = ref.orderBy("name", Query.Direction.ASCENDING).limit(10);
getData(firstQuery);

Query secondQuery = ref.orderBy("price", Query.Direction.ASCENDING).limit(10);
getMoreData(secondQuery);

第一种方法如下所示:

private void getData(Query query) {
    firestoreRecyclerOptions = new FirestoreRecyclerOptions.Builder<ModelClass>().setQuery(query, ModelClass.class).build();
    myFirestoreRecyclerAdapter = new MyFirestoreRecyclerAdapter(firestoreRecyclerOptions);
    recyclerView.setAdapter(myFirestoreRecyclerAdapter);
}

这里是第二种方法。

private void getMoreData(Query query) {
    firestoreRecyclerOptions = new FirestoreRecyclerOptions.Builder<ModelClass>().setQuery(query, ModelClass.class).build();
    myFirestoreRecyclerAdapter = new MyFirestoreRecyclerAdapter(firestoreRecyclerOptions);
    recyclerView.setAdapter(myFirestoreRecyclerAdapter);
}

两个变量都声明为全局变量:

private FirestoreRecyclerOptions<ModelClass> firestoreRecyclerOptions;
private MyFirestoreRecyclerAdapter myFirestoreRecyclerAdapter;

当应用程序启动时,元素将使用第一种方法显示在 RecyclerView 中。我想要实现的是,在单击按钮时,当 getMoreData() 方法被触发时,将第二个查询的结果添加到同一适配器中,最终有 20 个元素。现在,当我单击该按钮时,第二个查询中的元素将覆盖第一个。

最佳答案

FirestoreRecyclerAdapter 中没有任何内置功能可以组合两个查询。

我能想到的最好的方法是在您的应用代码中创建组合结果的 List/数组,然后使用数组适配器。这并不理想,因为您不会使用 FirebaseUI。

或者,看看 FirebaseUIs FirestorePagingAdapter ,它将(非实时)DocumentSnapshots 的多个页面组合在单个回收器 View 中。

关于android - 如何在 FirestoreRecyclerAdapter 中添加 2 个不同的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50590989/

相关文章:

android - 始终实例化 fragment 或保留对 fragment 的引用更好吗?

Android谷歌地图按钮样式

android - MissingPluginException(在 Android 上未找到 channel plugins.flutter.io/firebase_core 上的 Firebase#initializeCore 方法的实现)

swift - 我需要多个 Firebase 数据库引用吗?

android - 如何从 Push firebase 数据中检索数据

java - 向所有 Activity 全局添加/删除监听器

java - 是否可以通过对 apk 进行逆向工程来破解应用程序?

ios - 通过 CocoaPods 使用 GoogleMLKit 0.61.0 将 Firebase 库降级到 6.20.0

android - Firebase API 和 Android 的 Activity 生命周期

java - DataSnapshot.getValue 无法解析类型 T