Java 在Firebase数据库中搜索所有用户的特定密钥/值对
我试图在Firebase数据库中搜索与我在编辑文本(editTextValue)中键入的数字匹配的IDNumber键/值对的所有值。但最终的结果是,我的代码只针对第一个用户IDNumber键/值对进行搜索 如何在数据库中搜索每个用户的ID号以查找匹配项? 我在onClick方法中输入的DatabaseReference如下所示:Java 在Firebase数据库中搜索所有用户的特定密钥/值对,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我试图在Firebase数据库中搜索与我在编辑文本(editTextValue)中键入的数字匹配的IDNumber键/值对的所有值。但最终的结果是,我的代码只针对第一个用户IDNumber键/值对进行搜索 如何在数据库中搜索每个用户的ID号以查找匹配项? 我在onClick方法中输入的DatabaseReference如下所示: mFirebaseDatabase.child("users").orderByChild("IDNumber").addChildEventListener(
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) ;
}
}
如果需要,我的用户类如下所示:
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;
}
}
谢谢。在您的pojo中添加一个getter
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() {
}
如果另一个id匹配,editText仍然会给出相同的输出。要检查结果,只需记录所有值。您可以发布您的数据库结构吗?***-df5dd应用程序标题:******用户-LhJeqbrobPmmURtM licensePlateNumber:“i3t4Uxi48”名称:“Drius Shquille”-LLxp7VvfuJf05NAe licensePlateNumber:“6iy37Uoi”名称:“Jonnie”-LI12yGH_Jw3Unz0F licensePlateNumber:“ababcd3”名称:“Torq”这是我的结构的拷贝和粘贴@GastónSaillénIt仍在使用输入数据库的姓氏/值对。我是否应该将引用从onClick方法中删除,并稍作修改后放入onCreate方法中?@Gaston