Search code examples
androidfirebasefirebase-realtime-databasefirebaseui

Filter query to populate FirebaseRecyclerAdapter


This is still unclear how to populate FirebaseRecyclerAdapter with custom query.

  1. Define a reference. Here: DatabaseReference ref = mDatabase.getReference().child("users");

  2. Send it to adapter initAdapter(ref);

  3. Define query and set listener. Is it right?

    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()));
                    }
    
                    // ...
                };
    

Still showing all data from users. Need just to filter based on uid. Any clues?


Solution

  • For those who might have tried to make things over-complicated as me, or working at night, here is solution:

    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()));
                }
    
                // ...
            };
    

    Chao!