我是Android新手,刚开始了解RecyclerView之类的一些概念。我将Firebase用作数据库,因此为此实现了Firebase解决方案。

我的适配器:

FirebaseRecyclerAdapter<Offer,OfferViewHolder> adapter = new FirebaseRecyclerAdapter<Offer, OfferViewHolder>(
            Offer.class,
            R.layout.card_item,
            OfferViewHolder.class,
            mDatabaseReference.child("offer").getRef()
    ) {
        @Override
        protected void populateViewHolder(OfferViewHolder viewHolder, Offer model, int position) {
            if(tvNoMovies.getVisibility()== View.VISIBLE){
                tvNoMovies.setVisibility(View.GONE);
            }

            viewHolder.tvHeading.setText(model.getHeader());
            viewHolder.tvStoreName.setText(model.getStoreName());

        }
    };


现在我有两个问题:


是否可以在适配器内部过滤结果,还是必须使用ChildEventListeners
当引用包含数组或对象本身的键时,如何检索子值?

最佳答案

您可以使用FirebaseRecyclerAdapterDatabaseReference初始化Query。顾名思义,后者使您可以在数据库中的特定位置获取子项的子集。

举例来说,假设您只想显示特定商店的优惠:

DatabaseReference offers = mDatabaseReference.child("offer").getRef();
Query storeOffers = offers.orderByChild("storeName").equalTo("A. lazzi's store");
FirebaseRecyclerAdapter<Offer,OfferViewHolder> adapter = new FirebaseRecyclerAdapter<Offer, OfferViewHolder>(
        Offer.class,
        R.layout.card_item,
        OfferViewHolder.class,
        storeOffers
) {

10-04 23:00