首页 > 解决方案 > 切换 Firestore 查询

问题描述

我有 2 个从 Firestore 获取数据的查询。第一个在适配器项计数为 0 时执行

 query = collectionReference.orderBy("Places", Query.Direction.DESCENDING);

如果它存在于我的firestore数据库中,则执行另一个。

 query = collectionReference.whereEqualTo(Constants.SEARCH_QUERY, Constants.CURRENT_CITY);

而且我的 Firestore 适配器中还有 onDataChange 方法,该方法将根据执行的查询获取项目总数。

TOTAL_ITEM = getItemCount();

现在在我的选择上,它看起来像这样

        public FirestoreRecyclerOptions<PlacesModel> options(){
           if (Constants.TOTAL_ITEM == 0) {
           query = collectionReference.orderBy("Places", Query.Direction.DESCENDING);
           } else {
             query = collectionReference.whereEqualTo(Constants.SEARCH_QUERY, Constants.CURRENT_CITY);
           } 
            return new FirestoreRecyclerOptions.Builder<PlacesModel>()
            .setQuery(query, PlacesModel.class)
            .build();
}

这是我的适配器

adapter = new PlacesAdapter(placesViewModel.options());
        adapter.updateOptions(placesViewModel.options());
        adapter.startListening();

如果我的 firestore 数据库中存在该值,则适配器工作正常。但问题是当我尝试搜索firestore数据库中不存在的地方时,它应该执行我的第一个查询但它没有。这就是为什么我需要再次初始化适配器以根据我的第一个查询更新我的 recyclerview。我想要实现的是动态的。就像,当我搜索并且它什么都不返回时,它会根据我的第一个查询自动更新我的 recyclerview 。

标签: javaandroidgoogle-cloud-firestorefirebaseui

解决方案


推荐阅读