筛选结果在FirebaseRecyclerAdapter中 [英] Filter results in FirebaseRecyclerAdapter

查看:113
本文介绍了筛选结果在FirebaseRecyclerAdapter中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是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 引用包含数组或对象本身的键时如何检索子值?


解决方案您可以初始化 FirebaseRecyclerAdapter DatabaseReference 或者 Query 。顾名思义,后者允许您在数据库中的特定位置获取子集的一部分。



例如,如果您只想显示一个特定的商店:

$ p $ DatabaseReference offers = mDatabaseReference.child(offer)。getRef();
查询storeOffers = offers.orderByChild(storeName)。equalTo(A。lazzi's store);
FirebaseRecyclerAdapter< Offer,OfferViewHolder> (
Offer.class,
R.layout.card_item,
OfferViewHolder.class,
storeOffers
){


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?

解决方案

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

这篇关于筛选结果在FirebaseRecyclerAdapter中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆