我有两个问题:
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个元素。现在,当我单击按钮时,第二个查询中的元素将覆盖第一个查询。
2条答案
按热度按时间4smxwvx51#
我最终使用了友好eats代码实验室示例中的适配器类的修改版本。
下面的类允许您添加一个初始查询,然后使用
FirestoreAdapter.setQuery(query)
方法。ddarikpa2#
没有内置的东西可以在一个数据库中组合两个查询
FirestoreRecyclerAdapter
.我能想到的最好办法就是创造一个
List
/组合结果的数组出现在应用程序代码中,然后使用数组适配器。这并不理想,因为您不会使用firebaseui。或者,看看firebaseuis
FirestorePagingAdapter
,它组合了多个页面(非实时)DocumentSnapshots
在单个回收器视图中。