複数の値のためのAndroid Firebaseクエリ

クナル・シャー:

私は、カテゴリ「ABC」(一例)で、その後、配列リストにそれらの取得したUIDのを保存医師のすべてのUIDの取得したい
SQLクエリ以下で表示されているように、私は同じ結果をしたいの
医師場所カテゴリ=「ABC」からUIDを選択します;
ここでは、データベースの構造があります

次の活動のためのコードは以下に書かれています

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);
    }
アレックス・マモ:

この問題を解決するには、次のコード行を使用してください:

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

最後には、あなたがのUIDの完全なリストを持っています。ノートへのもう一つFirebeaseのAPIが非同期であるので、あなただけの内側にそのリストを使用することができますonDataChange()方法。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=389236&siteId=1