如何从firebase数据中获取特定键值?

Sur*_*kha 3 android android-studio firebase-realtime-database

{
  "DIV_1" : {
    "ACTINACT" : 1,
    "COORDINATOR" : "10CA056",
    "DIV_CODE" : "BSL",
    "DIV_ID" : 1,
    "DIV_NAME" : "Bhusawal",
    "ERP_LOC_CODE" : "CRB",
    "MTIME" : "2017-04-08T11:02:59",
    "ZONE_ID" : "ZONE_1"
  },

  "DIV_10" : {
    "ACTINACT" : 1,
    "COORDINATOR" : "06CS011",
    "DIV_CODE" : "UMB",
    "DIV_ID" : 10,
    "DIV_NAME" : "Ambala",
    "ERP_LOC_CODE" : "NRA",
    "MTIME" : "2017-04-08T11:02:59",
    "ZONE_ID" : "ZONE_3"
  }
}
Run Code Online (Sandbox Code Playgroud)

如何获得DIV_ID?最初我需要比较密钥(Ex :: Here DIV_10)然后DIV_NAME需要得到.提前致谢...

koc*_*eng 5

我假设DIV_1的父级和DIV_10是root.如果你有DIV_ID类似"1"或"10"的值并且需要获得值DIV_NAME,那么你应该这样做:

int divId = 1; // sample
FirebaseDatabase.getInstance().getReference().orderByChild("DIV_ID").equalTo(divId)
    .addValueEventListener(new ValueEventListener() {
        ... onDataChange(DataSnapshot dataSnapshot) {
             for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                 String divName = snapshot.child("DIV_NAME").getValue(String.class);
                 // there you go
                 // and please check if you have more than 1 value as result
             }
        }
        ...
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果你有一个像键值DIV_1还是DIV_10那么它应该是容易得多.像这样:

String key = "DIV_1";
FirebaseDatabase.getInstance().getReference(key)
    .addValueEventListener(new ValueEventListener() {
        ... onDataChange(DataSnapshot dataSnapshot) {
             String divName = snapshot.child("DIV_NAME").getValue(String.class);
             // note that in this sample, it doesn't need to loop, because:
             // data you get here is one level deeper than data you got on first sample
        }
        ...
    }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助