2016-08-06 9 views
0

私は、イベントとユーザーが存在するAndroid用のアプリケーションを作成しています。Firebase UI - リストビューを複雑なデータと同期させる方法

イベントには多数のユーザーが存在し、ユーザーには多数のイベントがあります。

は、だから私はこのように私のデータベースを構造化:今すぐ

- events 
    - <event_id> 
     - ... 
     - users 
      - <user_id1> 
      - <user_id2> 
      - ... 
- users 
    - <user_id1> 
     - <user_detail1> 
     - <user_detail2> 
     - ... 
    - <user_id2> 
     - <user_detail1> 
     - <user_detail2> 
     - ... 

、私は、ListViewコントロールで活動しており、私は成功しFirebaseListAdapterを使用してFirebaseUIを持つすべてのイベントのリストを表示することができました。

私は、イベントの詳細を表示したい別のアクティビティと、そのイベントのユーザーリストを表示する別のリストビューを持っています。

私はFirebaseListAdapterを使用すると、user_idのみを表示できますが、どのようにユーザーの詳細を取得してListViewに表示することができますか?具体的には

EDIT

、私は、特定のイベントのユーザーのリストがリストビューにリンクすることにしたいです。

fireAdapter = new FirebaseListAdapter<String>(
       this, 
       String.class, 
       android.R.layout.simple_list_item_1, 
       mRootRef.child("events").child("users") //here I have all user_id that I want to retrieve details for 
     ) { 
      @Override 
      protected void populateView(View v, String model, int position) { 
       //the string "model" will now have a user_id 
       TextView userName = (TextView)v.findViewById(android.R.id.text1); //I want to populate this field 

       String usernameString; 

       //How do I get to retrieve the username from user_id into this variable? 

       userName.setText(usernameString); 
      } 
     }; 

答えて

1

は、ユーザーの詳細を取得するには、ユーザIDにリスナーを添付することができます:私のコードは、現時点では次のようになりますので、私は、そのためのFirebaseListAdapterを使用します。リスナーは自動的にonChildAdded()または​​メソッドと呼ばれます。あなたのケースでは、初めての情報だけが必要なので、メソッドdataSnapshot.getChildren()で関数に返されたスナップショットですべての値を取得し、正確な値を得るにはdataSnapShot.child('blah-blah').value()

参照してくださいLinkを参照してください。

お返事のおかげで、私はFirebaseListAdapterのpoplateView関数内でリスナーを添付することが可能であることが判明し、魔法のように動作しますので、あなたのコードは、[OK]を、この

private DatabaseReference mDatabase; 
mDatabase = FirebaseDatabase.getInstance().getReference(); 
mDatabase.child('users').child('user_id1').setChildListener(ListenerName); 
+0

のように見えるかもしれません:)感謝を – alephz3r0

関連する問題