2016-08-31 5 views
0

がここに私のデータベースです:FirebaseRecyclerAdapter hasChild()メソッドを追加しますか?

Database:{ 
    X:{ 
    JK-KDUKSIDKSIIJDSL1:{ 
     text:"hello", 
     name:"Donald J. Drunk" 
    } 
    JK-KDadDFDDIJDSL1:{ 
     name:"Killery Hlinton" 
    } 
    } 
} 

そして、私はフィルタリングする私のFirebaseRecyclerAdapterのみキーtext含まれている私のRecyclerViewデータに追加するようになっています。これはどのように可能ですか?どのように追加できますか?現在のコード:

mAdapter = new FirebaseRecyclerAdapter<Campaign, CampaignHolder>(Campaign.class, R.layout.recyclerview_template, CampaignHolder.class, ref) { 
     @Override 
     public void populateViewHolder(final CampaignHolder viewHolder, final Campaign campaign, final int position) { 
      findViewById(R.id.progress_bar).setVisibility(View.INVISIBLE); 
      MainActivity.this.holder = viewHolder; 
      viewHolder.setTitle(campaign.title); 
      //... Other "set" methods 
    } 
} 
+1

異種型アダプタを実装するのは難しいようです。 AFAIK ,, 'FirebaseRecyclerAdapter'は現在、同じタイプのオブジェクトで動作するように設計されています。 –

+0

だから簡単に実装できません。うわー、私はFirebaseがこのような単純なことを逃すのは信じられません。これが私がParseを逃す理由です –

+0

私はこれらのSDKの両方で数回働いていますが、Firebaseが私のために勝ったのです。ところで、Firebaseは幾人かの天才がまだHetrogeneous構造を実装していることを知らなかった。 –

答えて

1

あなたのFirebaseRecyclerAdapteronBindViewHolderメソッドをオーバーライド試みることができます。

mAdapter = new FirebaseRecyclerAdapter<Campaign, CampaignHolder>(Campaign.class, R.layout.recyclerview_template, CampaignHolder.class, ref) { 

      @Override 
      public void onBindViewHolder(CampaignHolder viewHolder, int position) { 
       Campaign model = getItem(position); 
       if(model.getText() != null){ 
        populateViewHolder(viewHolder, model, position); 
       } 
      } 


      @Override 
      public void populateViewHolder(final CampaignHolder viewHolder, final Campaign campaign, final int position) { 
       findViewById(R.id.progress_bar).setVisibility(View.INVISIBLE); 
       MainActivity.this.holder = viewHolder; 
       viewHolder.setTitle(campaign.title); 
       //... Other "set" methods 
      } 
    }; 

この方法では、クエリの場所にあるすべてのデータを引き出しますが、テキスト属性のないエントリは表示されません。それが不十分で、クエリごとにダウンロードするデータの量を最小限に抑えたい場合、私が見る唯一のオプションは、上記のコメントに記載されているものに近いものです。つまり、これらのエントリだけを格納する別の場所を作成する必要があります。テキスト値を持つ。

関連する問題