2017-01-11 15 views
2

Пока неясно, как заполнить FirebaseRecyclerAdapter специальным запросом.Отфильтровать запрос для заполнения FirebaseRecyclerAdapter

  1. Определите ссылку. Здесь: DatabaseReference ref = mDatabase.getReference().child("users");

  2. Отправить в адаптер initAdapter (ref);

  3. Определить запрос и установить прослушиватель. Это правильно?

    mAdapter = new FirebaseRecyclerAdapter<User, UserHolder>(User.class, R.layout.user_row_layout, UserHolder.class, ref) { 
    
         @Override 
         protected void populateViewHolder(final UserHolder viewHolder, final User model, int position) { 
    
          Query query = ref.orderByChild("group").equalTo(uid); 
          query.addChildEventListener(new ChildEventListener() { 
           @Override 
           public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
            viewHolder.setName(model.getName()); 
            viewHolder.setStatus(getStatus(model.getStatus())); 
           } 
    
           // ... 
          }; 
    

Тем не менее, показывающий все данные от пользователей. Нужно просто фильтровать на основе uid. Любые подсказки?

+1

С тем, как вы построить свой адаптер, вы, кажется, показывает список пользователей. Почему вы подключаете другой прослушиватель для детей в 'populateViewHolder'? –

ответ

2

Для тех, кто мог бы попытаться сделать вещи более-сложные, как я, или работать по ночам, вот решение:

mAdapter = new FirebaseRecyclerAdapter<User, UserHolder>(
       User.class, 
       R.layout.user_row_layout, 
       UserHolder.class, 
       ref.orderByChild("group").equalTo(uid) 
) { 
    @Override 
    protected void populateViewHolder(final UserHolder viewHolder, final User model, int position) { 

       viewHolder.setName(model.getName()); 
       viewHolder.setStatus(getStatus(model.getStatus())); 
      } 

      // ... 
     }; 

Чао!

0

Простой пример, где я показываю список ранга со всеми пользователями:

FirebaseRecyclerAdapter<UserData,RankListViewHolder> adapter = new FirebaseRecyclerAdapter<UserData, RankListViewHolder> 
       (
      UserData.class, 
      R.layout.rank_item, 
      RankListViewHolder.class, 
      userRef.child("users").getRef() //--Set here your query 
       ) 
     { 
      @Override 
protected void populateViewHolder(RankListViewHolder viewHolder, UserData model, int position) 
      { 
       viewHolder.tvPos.setText(""+position+"º"); 
       viewHolder.userId = model.getId(); 
      } 
     }; 

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

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