Filter kueri untuk mengisi FirebaseRecyclerAdapter

Masih belum jelas cara mengisi FirebaseRecyclerAdapter dengan kueri khusus.

  1. Tentukan referensi. Di sini: DatabaseReference ref = mDatabase.getReference().child("users");

  2. Kirimkan ke adaptor initAdapter(ref);

  3. Tentukan kueri dan atur pendengar. Apakah tepat?

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

Masih menampilkan semua data dari pengguna. Hanya perlu memfilter berdasarkan uid. Ada petunjuk?


person saintPeter    schedule 11.01.2017    source sumber
comment
Dengan cara Anda membuat adaptor, Anda sepertinya menampilkan daftar pengguna. Mengapa Anda melampirkan pemroses anak lain di populateViewHolder?   -  person Frank van Puffelen    schedule 12.01.2017


Jawaban (2)


Bagi mereka yang mungkin pernah mencoba membuat segalanya menjadi rumit seperti saya, atau bekerja di malam hari, berikut solusinya:

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!

person saintPeter    schedule 12.01.2017

Contoh sederhana di mana saya menampilkan daftar peringkat dengan semua pengguna:

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();
            }
        };
person Diego Venâncio    schedule 12.07.2017