我有两个问题:
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个元素。现在,当我单击按钮时,第二个查询中的元素将覆盖第一个查询中的元素。
答案 0 :(得分:1)
在List
中组合两个查询没有任何内置功能。
我能想到的最好的方法是在应用代码中创建合并结果的DocumentSnapshots
/数组,然后使用数组适配器。它并不理想,因为您不会使用FirebaseUI。
或者,查看FirebaseUIs FirestorePagingAdapter
,它在单个回收站视图中组合了(非实时).First()
的多页(。
答案 1 :(得分:0)
我最终使用了Friendly-eats code lab sample中适配器类的修改版本。
以下类允许您添加初始查询,然后使用changeOptions
方法设置另一个查询。
FirestoreAdapter.setQuery(query)