【问题标题】:Filter results in FirebaseRecyclerAdapter在 FirebaseRecyclerAdapter 中过滤结果
【发布时间】:2016-11-01 13:18:48
【问题描述】:

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

【问题讨论】:

    标签: android firebase firebase-realtime-database firebaseui


    【解决方案1】:

    您可以使用DatabaseReferenceQuery 初始化FirebaseRecyclerAdapter。顾名思义,后者允许您获取数据库中特定位置的子集。

    例如,如果您只想显示来自特定商店的优惠:

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

    【讨论】:

    • 我已经使用了查询功能。我想要实现的是首先按“选择的城市”过滤,然后按“选择的类别”过滤。我知道我会得到比需要更多的数据,但我想不出一个好的解决方案来避免这种情况
    • Firebase 查询只能按单个属性进行过滤。见stackoverflow.com/questions/26700924/…
    • 非常感谢。现在我正在使用 childListener 并过滤事件中的结果......在我开始让你紧张之前,我将参加 udacity firebase 课程:D。
    猜你喜欢
    • 2018-06-06
    • 1970-01-01
    • 2016-11-20
    • 2018-05-20
    • 2017-05-26
    • 2017-11-02
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多