Android Firebase consultas para varios valores

Kunal Shah:

Quiero buscar a los todos de UID del médico cuya categoría es "abc" (ejemplo) y luego almacenar esos UID recuperados en una lista de arreglo
Quiero mismos resultados como se muestra por la continuación de consultas SQL
seleccione UID de los médicos en la categoría = "abc" ;
Aquí está la estructura de base de datos

Código para la siguiente actividad se escribe abajo

private void loadDoctors() {

    ArrayList<String> uid = getIntent().getStringArrayListExtra("doctor_list");

    for (int i =0;i<uid.size();i++){
        DatabaseReference doctors = FirebaseDatabase.getInstance().getReference("Doctors").child(uid.get(i));
        Adapter = new FirebaseRecyclerAdapter<DoctorModel, DoctorViewHolder>(
                DoctorModel.class,
                R.layout.doctors_home,
                DoctorViewHolder.class,
                doctors
        ) {
            @Override
            protected void populateViewHolder(final DoctorViewHolder viewHolder, final DoctorModel model, int position) {
                viewHolder.doctor_name.setText(model.getName());

                Glide.with(Doctors.this).load(model.getProfileimage()).into(viewHolder.doctor_image);

                viewHolder.qualification.setText(model.getQualification());

                viewHolder.rating.setText(model.getRating());

            }

        };
        Adapter.notifyDataSetChanged();
        doctors_list.setAdapter(Adapter);
    }
Alex Mamo :

Para solucionar esto, por favor utilice las siguientes líneas de código:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference doctorsRef = rootRef.child("Doctors");
Query categoryQuery = doctorsRef.orderByChild("category").equalTo("Cardiology");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> uidList = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String uid = ds.getKey();
            uidList.add(uid);
        }

        //Do what you need to do with your list
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
categoryQuery.addListenerForSingleValueEvent(valueEventListener);

Al final, usted tendrá una lista completa de los fluidos. Una cosa más a la nota, porque Firebease API es asíncrona, usted será capaz de utilizar esa lista sólo dentro de onDataChange()método.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=389309&siteId=1
Recomendado
Clasificación