【问题标题】:How to retrieve data for a specific child in firebase database - android studio/ java?如何在 firebase 数据库中检索特定子项的数据 - android studio/java?
【发布时间】:2019-04-07 03:15:31
【问题描述】:

我想检索特定孩子的数据,我该如何编写代码?我尝试了很多,但没有奏效:“([就像在我的数据库中一样,如何获取特定孩子(如 lubna)的任务并获取它的所有孩子?

【问题讨论】:

    标签: java android firebase android-studio firebase-realtime-database


    【解决方案1】:

    初始化类变量:

    private DatabaseReference mDatabase;
    mDatabase = FirebaseDatabase.getInstance().getReference();
    private DatabaseReference  lubnaRef = mDatabase.child("tasks/Lubna");
    

    然后出于测试目的,我假设您在活动的 onCreate 方法中调用它,假设您没有数据模型,您将添加以下内容:

    lubnaRef.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //These are all of your children.
            Map<String, Object> lubna = (Map<String, Object>) dataSnapshot.getValue();
    
    
            for (String childKey: lubna.keySet()) {
                //childKey is your "-LQka.. and so on"
                //Your current object holds all the variables in your picture.
                Map<String, Object> currentLubnaObject = (Map<String, Object>) lubna.get(childKey);
    
                //You can access each variable like so: String variableName = (String) currentLubnaObject.get("INSERT_VARIABLE_HERE"); //data, description, taskid, time, title
            }
       }
    
       @Override
       public void onCancelled(DatabaseError databaseError) {
    
       }
    });
    

    【讨论】:

      【解决方案2】:

      要解决这个问题,请使用以下代码行:

      DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
      DatabaseReference lubnaRef = rootRef.child("tasks").child("Lubna");
      ValueEventListener valueEventListener = new ValueEventListener() {
          @Override
          public void onDataChange(DataSnapshot dataSnapshot) {
              for(DataSnapshot ds : dataSnapshot.getChildren()) {
                  String title = ds.child("title").getValue(String.class);
                  Log.d(TAG, title);
              }
          }
      
          @Override
          public void onCancelled(@NonNull DatabaseError databaseError) {
              Log.d(TAG, databaseError.getMessage());
          }
      };
      lubnaRef.addListenerForSingleValueEvent(valueEventListener);
      

      以同样的方式获取title,您也可以获取其他值。您的 logcat 中的输出将是:

      Homework
      //and so on
      

      【讨论】:

      • 你好 LKB!你有没有试过我上面的解决方案,它有效吗?
      猜你喜欢
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 2018-10-04
      相关资源
      最近更新 更多