我正在尝试在Firebase数据库中搜索IDNumber键/值对中与我在编辑文本(editTextValue)中键入的数字匹配的所有值。但是最终发生的是,我的代码仅针对第一个用户IDNumber键/值对进行搜索。
如何在数据库中搜索每个用户的IDNumber以进行匹配? 我放入onClick方法中的DatabaseReference如下:
mFirebaseDatabase.child("users").orderByChild("IDNumber").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
User userRef = dataSnapshot.getValue(User.class) ;
if (editTextValue.equals(userRef.IDNumber)) {
textView.setText(R.string.user_notified) ;
} else {
textView.setText(R.string.IDNumber_not_found) ;
}
}
如果需要,我的User类如下:
public class User {
public String name ;
public String IDNumber ;
public User() {
}
public User(String name, String IDNumber) {
this.name = name ;
this.IDNumber = IDNumber ;
}
public String getName() {
return name ;
}
public void setName(String name) {
this.name = name;
}
}
谢谢。
答案 0 :(得分:0)
在您的pojo中添加吸气剂
public String getIDNumber() {
return IDNumber ;
}
更改您的听众
mFirebaseDatabase.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//We iterate inside the parent node in order to get all childrens
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
//Get IDNumber from everybody
User userRef = snapshot.getValue(User.class) ;
String userIDNumber = userRef.getIDNumber();
Log.e("IDNumbers: " , "" + userIDNumber);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
您不需要构造函数,而是可以使用空的构造函数
删除这个
public User(String name, String IDNumber) {
this.name = name ;
this.IDNumber = IDNumber ;
}
只使用这个
public User() {
}