2016-08-06 4 views
0

Я пишу приложение для Android, в котором есть события и пользователи.Firebase UI - Как синхронизировать ListView со сложными данными

Событие имеет много пользователей, и у пользователя много событий.

Так я структурировал свою базу данных, как это:

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

Теперь у меня есть активность с ListView, и я успешно удалось показать список всех событий с FirebaseUI использованием FirebaseListAdapter.

У меня есть вторая операция, в которой я хочу показать сведения о мероприятии, а другой ListView отображает список пользователей для этого события.

Мой вопрос: если я использую FirebaseListAdapter, я могу только показать user_id, как я могу получить данные о пользователе, чтобы показать их в ListView?

EDIT

Чтобы быть более точным, я хочу, чтобы список пользователей определенного события, которые будут связаны с ListView. Я хочу использовать FirebaseListAdapter для этого, так что мой код выглядит следующим образом на данный момент:

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

Чтобы получить информацию о пользователе, вы можете прикрепить слушателя идентификатор пользователя. Слушатель будет автоматически вызван onChildAdded() или onChildChanged() методами. Для вашего случая, поскольку вы хотите получить информацию только в первый раз, вы можете получить все значения с моментальным снимком, возвращаемым функцией, с помощью метода dataSnapshot.getChildren() и для получения точных значений используйте функцию

Для полного обратитесь к Link.

Вашего код может выглядеть примерно так

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

ИТАК благодаря вашему ответу я узнал, что можно прикрепить слушатель внутри функции poplateView из FirebaseListAdapter, и работают как шарм :) Большое спасибо – alephz3r0

 Смежные вопросы

  • Нет связанных вопросов^_^