首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Firebase检索子信息回android

从Firebase检索子信息回android
EN

Stack Overflow用户
提问于 2016-10-25 01:44:43
回答 1查看 766关注 0票数 0

我是Android Studio和Firebase本身的新手。我理解,为了从其唯一的ID中获取孩子的数据,我可能需要使用data方法。例如,我需要将name从Firebase数据库检索回android应用程序。在这种情况下,如何实现它?我会非常感谢你的帮助!

代码语言:javascript
复制
{
  "0Zs7aiWplRRJ5IJ5pazuUOxIdqz2" : {

    "name" : "yeo",
    "pos" : "intern",
    "team" : "nwrs"
  },
  "kaLCjJFoGETWCWH42kNkc90b5Ku1" : {

    "2016" : {
      "9" : {
    "25" : {
      ".priority" : 0.0,
      "AM" : "",
      "OT" : "",
      "OVN" : "",
      "PM" : "",
      "TPT" : ""
    }
      },
      "10" : {
    "1" : {
      ".priority" : 0.0,
      "AM" : "zxc11",
      "OT" : "12",
      "OVN" : "33",
      "PM" : "222",
      "TPT" : "54"
    },
    "26" : {
      "AM" : "aa",
      "OVN" : "gg",
      "PM" : "ccc",
      "TPT" : ""
    },
    "29" : {
      ".priority" : 0.0,
      "AM" : "dd",
      "OVN" : "aa",
      "PM" : "ss",
      "TPT" : "2fd"
    }
      }
    },
    "name" : "Jing Yang",
    "pos" : "Intern",
    "team" : "NWRS"
  }
}

下面是我的当前代码

代码语言:javascript
复制
    root.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Set<String> set = new HashSet<String>();
            Iterator i = dataSnapshot.getChildren().iterator();

            while (i.hasNext()){
                set.add(((DataSnapshot)i.next()).getKey());

            }
            names.clear();
            names.addAll(set);

            arrayAdapter.notifyDataSetChanged();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-25 02:50:04

我假设root引用数据库的根。在这种情况下,您的onDataChange将在该位置获取整个数据的快照。您可以遍历它们,然后依次获得每个子节点的属性:

代码语言:javascript
复制
root.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Set<String> set = new HashSet<String>();
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            //set.add(childSnapshot.getKey());
            set.add(childSnapshot.child("name").getValue(String.class));
        }
        names.clear();
        names.addAll(set);

        arrayAdapter.notifyDataSetChanged();

但我强烈建议您创建一个Java类,它表示列表中的项。在您的情况下,这可以非常简单,如:

代码语言:javascript
复制
public class Item {
    public string name;
    public string pos;
    public string team;
}

然后,您可以使用以下内容阅读这些项目:

代码语言:javascript
复制
root.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Set<String> set = new HashSet<String>();
        for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
            Item child = childSnapshot.getValue(Item.class);
            set.add(item.name);
        }
        names.clear();
        names.addAll(set);

        arrayAdapter.notifyDataSetChanged();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40230098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档