我的RecyclerViewAdapter中的重写方法未被调用(Firebase UI Firestore)

时间:2018-02-17 00:13:44

标签: android firebase android-recyclerview google-cloud-firestore firebaseui

这是代码的片段,我在调用我的livesata观察方法时创建了适配器。

 mViewModel.getMutableLiveData().observe(this, new Observer<Filters>() {
            @Override
            public void onChanged(@Nullable Filters filters) {
                if(filters != null){

                   FirebaseFirestore  mFireStored = FirebaseFirestore.getInstance();

                    Log.d("FiltersINfoVM",filters.getPrice() +" ");
                    Log.d("FiltersINfoVM",filters.getSortBy() +" ");
                    Log.d("FiltersINfoVW",filters.getCategory() +" ");
                    Log.d("FiltersINfoVW",filters.getSearchDescription(getContext()) +" ");
                    Log.d("FiltersINfoVW",filters.getCity() +" ");
                    // Construct query basic query
                    CollectionReference collectionReference = mFireStored.collection("Products");
                    //Query query = collectionReference.orderBy("Products");
                    // Category (equality filter)
            //        if (filters.hasCategory()) {
            //            query2 = collectionReference.whereEqualTo(Product.FIELD_CATEGORY,"docs" );//filters.getCategory()
            //        }

                                //     City (equality filter)
            //        if (filters.hasCity()) {
            //            query2 = collectionReference.whereEqualTo(Product.FIELD_CITY,"owerri" );//filters.getCity()
            //        }
            //
            //             //    Price (equality filter)
            //        if (filters.hasPrice()) {
            //            query2 = collectionReference.whereEqualTo(Product.FIELD_PRICE, filters.getPrice());
            //        }
                    // Sort by (orderBy with direction)
//                    if (filters.hasSortBy()) {
//                        //query = collectionReference.orderBy(filters.getSortBy(), filters.getSortDirection())
//                        Log.d("Sort Values method",filters.getSortBy());
//                        query2 = collectionReference.orderBy(filters.getSortBy(),filters.getSortDirection());
//                    }
                    query2 = collectionReference.orderBy("productName", Query.Direction.ASCENDING);

                    // Limit items
                    //query = collectionReference.limit(LIMIT);
                    // query = collectionReference.orderBy("numRatings", Query.Direction.DESCENDING);

                    FirestoreRecyclerOptions<Product> response2 = new FirestoreRecyclerOptions.Builder<Product>()
                            .setQuery(query2,Product.class)
                            .build();

                    FirestoreRecyclerAdapter<Product,ExploreViewholder>
                            adapterResp = new FirestoreRecyclerAdapter<Product,ExploreViewholder>(response2) {

                        @Override
                        public ExploreViewholder onCreateViewHolder(ViewGroup parent, int viewType) {
                            View view = LayoutInflater.from(parent.getContext())
                                    .inflate(R.layout.recycler_view_explore_item, parent, false);
                            return new ExploreViewholder(view);
                        }

                        @Override
                        protected void onBindViewHolder(@NonNull ExploreViewholder holder, int position, @NonNull Product model) {
                            holder.productName.setText(model.getProductName());
                            holder.creatorName.setText(mUser.getDisplayName());
                            holder.productDesc.setText(model.getProductDescription());
//                Glide.with(getContext())
//                        .load(model.getProductImageUrl())
//                        .into(holder.productImage);

                        }

                        @Override
                        public void onError(FirebaseFirestoreException e) {
                            Log.e("error", e.getMessage());
                        }
                    };

                    adapterResp.notifyDataSetChanged();
                   // mRecycler.setAdapter(adapterResp);
                    mRecycler.swapAdapter(adapterResp,true);
                }    
            }
        });

我在onchanged方法中获取过滤器对象中的数据,并且一切都按预期工作,除非是时候调用Firestore回收器适配器的重写方法,(他们不这样做,我设置了断点并尝试调试,执行只是跳过这些方法),因此RecyclerView不显示任何数据。 &#34;产品&#34;是一个模型类,ExploreViewHolder是RecyclerView的查看器。问题是我第一次查询数据库时收到的数据并显示在recycleler视图中..但是我想在运行时再次查询数据,我是使用对话框片段进行的,我创建了一个新的查询新的适配器和我交换旧的适配器这个问题是它在这个新的查询后它不会在recyclerview中显示任何内容......

0 个答案:

没有答案