services play auth android firebase firebase-database firebaseui

android - auth - firebaseui version firebase play services version



Consulta de filtro para completar FirebaseRecyclerAdapter (2)

Para aquellos que podrían haber intentado hacer cosas demasiado complicadas como yo, o trabajar de noche, aquí hay una solución:

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!

Todavía no está claro cómo completar FirebaseRecyclerAdapter con consultas personalizadas.

  1. Definir una referencia. Aquí: DatabaseReference ref = mDatabase.getReference().child("users");

  2. Enviarlo al adaptador initAdapter (ref);

  3. Definir consulta y establecer oyente. ¿Es correcto?

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

Todavía muestra todos los datos de los usuarios. Solo necesita filtrar en función de uid. ¿Alguna pista?


Un simple ejemplo donde muestro una lista de rango con todos los usuarios:

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