在Firebase数据库中搜索所有用户的特定键/值对

时间:2018-08-02 17:00:52

标签: java android firebase firebase-realtime-database

我正在尝试在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;
}
}

谢谢。

1 个答案:

答案 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() {
}