2016-06-01 19 views
4

複数のノードで特定の子値を照会し、FirebaseListAdapterのリストビューにそれらを設定したいとします。 FirebaseListAdapterメソッドへのfirebase参照を渡しています。これは、下の図の赤い矩形で表示されます。 および「カテゴリ」キーの値のみをリストビューに表示したいとします。下の図の緑色の矩形になっています。firebaseで複数のノードの特定の子値を照会する方法android

enter image description here

私のコードはここにある:

catgoryList = (ListView) findViewById(R.id.catList); 
    rootRef = FirebaseDatabase.getInstance().getReference(); 
    restaurantMenuRef = rootRef.child("menu").child(restaurantID); 

    FirebaseListAdapter<String> listAdapter = new FirebaseListAdapter<String> 
      (this, String.class, R.layout.menu_list_item, restaurantMenuRef) { 
     @Override 
     protected void populateView(View v, String s, int position) { 
      TextView menuName = (TextView)v.findViewById(R.id.menuName); 
      menuName.setText(s); 
     } 
    }; 
    catgoryList.setAdapter(listAdapter); 

、カテゴリ名を表示するのTextViewを含むListViewコントロールのレイアウト。

答えて

2

あなたはDataSnapshotから正しい値を抽出するためにFirebaseListAdapter.parseDataSnapshot()をオーバーライドする必要があります:

dataSnapshotsが渡され
FirebaseListAdapter<String> listAdapter = new FirebaseListAdapter<String> 
     (this, String.class, R.layout.menu_list_item, restaurantMenuRef) { 

    @Override 
    protected String parseSnapshot(DataSnapshot snapshot) { 
     return snapshot.child("category").getValue(String.class); 
    } 

    @Override 
    protected void populateView(View v, String s, int position) { 
     TextView menuName = (TextView)v.findViewById(R.id.menuName); 
     menuName.setText(s); 
    } 
}; 
+0

? –

+0

ええ、それについて申し訳ありません。パブリックAPIと一致するようにコードを更新しました。 –

+0

これは正常に動作しましたが、SQLの代わりになるのは "WHERE category = 'drinks'ですか? –

関連する問題