gpt4 book ai didi

android - 如何从 android 中的 firebase 获取子值的子值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:19 25 4
gpt4 key购买 nike

如何获取ZNAME值?最初我需要比较键(Ex::Here ZONE_1),然后需要获取 ZNAME。提前致谢...

最佳答案

要访问数据库中的值,您需要为该位置创建一个 DatabaseReference。以下是对数据库中位置的三个引用:

DatabaseReference zonesRef = FirebaseDatabase.getInstance().getReference("ZONES");
DatabaseReference zone1Ref = zonesRef.child("ZONE_1");
DatabaseReference zone1NameRef = zone1Ref.child("ZNAME");

在这段代码中:

  • zonesRef 指向 /ZONES
  • zone1Ref 指向 /ZONES/ZONE_1
  • zone1NameRef 指向 /ZONES/ZONE_1/ZNAME

参见 Firebase documentation on getting a database reference获取更多信息。

您可以将监听器附加到每个引用,以获取该位置的值。例如,获取 /ZONES/ZONE_1/ZNAME 的值:

zone1NameRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, dataSnapshot.getValue(String.class));
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});

有关此类读取操作的更多信息,请参阅 Firebase documentation on reading values .

如果您改为监听 /ZONES/ZONE_1,您将获得整个节点及其所有属性的 DataSnapshot。然后使用 DataSnapshot.child() 从中获取 ZNAME:

zone1Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(TAG, dataSnapshot.child("ZNAME").getValue(String.class));
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});

更上一层楼,您可以在 /ZONES 上收听,这将为您提供所有区域的快照。由于这会处理多个 child ,因此您需要使用 DataSnapshot.getChildren() 遍历它们:

zonesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) {
Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class));
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});

有关这方面的更多信息,请参阅 Firebase documentation on listening for lists of data .

最后,您可能想要查询以查找特定区域,例如查找具有 "ZCODE": "ECOR" 的区域:

Query zonesQuery = zonesRef.orderByChild("ZCODE").equalTo("ECOR");
zonesQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot zoneSnapshot: dataSnapshot.getChildren()) {
Log.i(TAG, zoneSnapshot.child("ZNAME").getValue(String.class));
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "onCancelled", databaseError.toException());
}
});

要了解更多信息,请阅读 Firebase documentation on sorting and filtering data .

关于android - 如何从 android 中的 firebase 获取子值的子值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43293935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com