-patient
-9876543210
-hjsfrhwugfshgjgjwwg
-name
-description
-tokennumber
-disease
-date-'24/12/91'
-hjsfrhwugfshgjgjwwg
-name
-description
-tokennumber
-disease
-date-'24/12/91'
-9876543211
我有这样的数据。我想要显示所有符合条件的孩子,日期= 24/12/91。在使用push之前我可以从patient检索所有子数据。但是在使用我无法检索的唯一键之后。这是我之前的代码。
我有这样的数据。我想要显示所有遇到条件的孩子,日期= 24/12/91。在使用push之前我可以从patient检索所有子数据。但是在使用我无法检索的唯一键之后。这是我之前的代码。
DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
Query query = reference.child("patient").orderByChild("dates").equalTo(date);
query.addListenerForSingleValueEvent(new ValueEventListener() {
public ArrayList<HashMap> hashMap;
public HashMap<String, String> hash;
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
medical_list = new ArrayList<>();
for (DataSnapshot patient : dataSnapshot.getChildren()) {
String name = patient.child("name").getValue(String.class);
String description = patient.child("description").getValue(String.class);
String tokennumber = patient.child("tokennumber").getValue(String.class);
String disease = patient.child("disease").getValue(String.class);
medicaldetail medi = new medicaldetail(name, description, tokennumber, disease);
medical_list.add(medi);
}
act_adapter obj = new act_adapter(Reports.this, medical_list);
listview.setAdapter(obj);
obj.notifyDataSetChanged();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
`
[1]: https://i.stack.imgur.com/spcZt.png
答案 0 :(得分:0)
您的代码中的问题是您在查询中遗漏了一个孩子,为此,请更改以下代码行:
Query query = reference.child("patient").orderByChild("dates").equalTo(date);
为:
Query query = reference.child("patient").child(patientId).orderByChild("dates").equalTo(date);
其中patientId
是您正在寻找满足条件的患者的身份。例如,可能是:9876543210
。
修改强>
根据您的评论,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference patientRef = rootRef.child("patient");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String mobileNumber = ds.getKey();
DatabaseReference mobileNumberRef = patientRef.child("mobileNumber");
Query query = mobileNumberRef.orderByChild("dates").equalTo(date);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
String name = dSnapshot.child("name").getValue(String.class);
Log.d("TAG", name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(eventListener);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
patientRef.addListenerForSingleValueEvent(valueEventListener);
答案 1 :(得分:0)
像这样更改您的查询..
Query query = reference.child("patient").child("9876543210").child(databasereferenceobject.getKey()).orderByChild("date").equalTo(date);