A. Ilazi
A. Ilazi

Reputation: 341

Filter results in FirebaseRecyclerAdapter

I am new to Android and just started to understand some concepts like the RecyclerView. I am using Firebase as a database so I implemented the Firebase solution for that.

My Adapter:

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

        }
    };

Now I have two questions:

  1. Is it possible to filter results inside the adapter or do i have to use ChildEventListeners for that?
  2. When referencing to a key that contains an Array or an object itself how to retrieve child values?

Upvotes: 1

Views: 777

Answers (1)

Frank van Puffelen
Frank van Puffelen

Reputation: 598817

You can initialize the FirebaseRecyclerAdapter with either a DatabaseReference or a Query. As its name implies, the latter allows you to get a subset of the children at a specific location in the database.

For example say if you want to only show offers from a specific store:

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
) {

Upvotes: 2

Related Questions