我正在使用firebase数据库来检索数据,实际上我想根据用户的'cCompany'过滤数据。我正在使用一个edittext字段,它将输入到下面函数的数据(sCompany)传入'filt'。因此,当我尝试使用此'filt'进行查询时,只有当cCompany存在于最顶层用户的uid中时,它才会过滤数据。如果它存在于其他uid中,那么它不会过滤数据。请解决这个问题。
private void addEventFirebaseListener1(final String filt) {
//Progressing
DatabaseReference usersRef =
FirebaseDatabase.getInstance().getReference("Users");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String userId = ds.getKey();
DatabaseReference userIdRef = FirebaseDatabase
.getInstance().getReference("Users").child(userId).child("Complaints");
Query q =userIdRef.orderByChild("cCompany").equalTo(filt);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
{
Generalperson user = postSnapshot.getValue(Generalperson.class);
list_users.add(user);
}
if (list_users.size() != 0) {
ServiceComplaintAdapter adapter = new
ServiceComplaintAdapter(ServiceComplaintsActivity.this, list_users);
list_data.setAdapter(adapter);
} else {
list_data.setVisibility(View.INVISIBLE);
k.setVisibility(View.VISIBLE);
}
circular_progress.setVisibility(View.INVISIBLE);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
q.addListenerForSingleValueEvent(valueEventListener);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
usersRef.addListenerForSingleValueEvent(eventListener);
}