2016-11-01 12 views
1

私はAndroidを初めて使い、ちょうどRecyclerViewのような概念を理解し始めました。 Firebaseをデータベースとして使用しているため、Firebaseソリューションを実装しました。FirebaseRecyclerAdapterでのフィルタ結果

マイアダプタ:

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

     } 
    }; 

今、私は2つの質問があります。

  1. は、アダプタ内部の結果をフィルタリングすることが可能ですか私はそのためにChildEventListenersを使用する必要がありますか?
  2. Arrayまたはオブジェクト自体を含むキーを参照するときに、子値を取得する方法はありますか?

答えて

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

私はすでにクエリー機能を使用しています。私が達成したいのは、最初に「都市を選んで」、次に「カテゴリを選んだ」というものです。より多くのデータを必要とすることは知っていますが、回避するための良い解決方法はありません。 –

+0

Firebaseクエリは単一のプロパティでしかフィルタリングできません。 http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –

+0

ありがとうございます。今私はchildListenerを使用してイベントの結果をフィルタリングしています...私はあなたの神経を取得する前にudacityのfirebaseコースを行うつもりです:D。 –

関連する問題