【问题标题】:Recycler view not displaying data from firebase firestore回收站视图不显示来自 Firebase Firestore 的数据
【发布时间】:2018-02-09 08:21:08
【问题描述】:

问题是调用 onchanged 方法后回收器视图不显示数据。否则,显示信息需要很长时间。代码如下:

public void onFilter(Filters filters) {
         Query query = mFireStore.collection("Products");

        // Category (equality filter)
        if (filters.hasCategory()) {
            query = query.whereEqualTo(Product.FIELD_CATEGORY, filters.getCategory());
        }

        // City (equality filter)
        if (filters.hasCity()) {
            query = query.whereEqualTo(Product.FIELD_CITY, filters.getCity());
        }

        // Price (equality filter)
        if (filters.hasPrice()) {
            query = query.whereEqualTo(Product.FIELD_PRICE, filters.getPrice());
        }
        // Sort by (orderBy with direction)
        if (filters.hasSortBy()) {
            query = query.orderBy(filters.getSortBy(), filters.getSortDirection());
        }

        // Limit items
        query = query.limit(LIMIT);

        Log.d("Query Info", query.toString());




        FirestoreRecyclerOptions<Product> response = new FirestoreRecyclerOptions.Builder<Product>()
                .setQuery(query,Product.class)
                .build();


        adapter = new FirestoreRecyclerAdapter<Product,ExploreViewholder>(response) {

            @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());
            }
        };

        adapter.notifyDataSetChanged();
        mRecycler.setAdapter(adapter);




    }

这是调用方法的地方,我从视图模型中获取数据,这没问题,但回收器视图会显示数据。

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


                    Log.d("ExploreFragObserver", filters.getCategory() + " ");
                    Log.d("ExploreFragObserver", filters.getCity() + "");
                    Log.d("ExploreFragObserver", filters.getSortBy() + " ");
                    Log.d("ExploreFragObserver", filters.getPrice() + " ");
                    onFilter(filters);
                    Log.d("Done Loading Adapt", filters.getSortBy() + " ");
                    Log.d("ExploreFragObserver", filters.getCategory() + " ");
                    Log.d("ExploreFragObserver", filters.getCity() + "");
                    Log.d("ExploreFragObserver", filters.getSortBy() + " ");
                    Log.d("ExploreFragObserver", filters.getPrice() + " ");

                   // onFilter(Filters.getDefault());


                }




            }
        });

对话框片段为视图模型中的过滤器对象设置数据,该片段和调用片段都共享。

【问题讨论】:

  • 对于未来的访问者,您可以查看 here,其中我已经逐步解释了如何使用 Android 将 Firestore 中的数据显示到 RecyclerView

标签: android android-fragments android-recyclerview android-livedata


【解决方案1】:

我想你忘了添加adapter.startListening()

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多