在FirebaseRecyclerAdapter中过滤结果

时间:2016-11-01 13:18:48

标签: android firebase firebase-realtime-database firebaseui

我是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());

        }
    };

现在我有两个问题:

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

1 个答案:

答案 0 :(得分:2)

您可以使用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
) {