Firebase - 从Android中的FirebaseListAdapter查询

时间:2017-02-18 03:25:59

标签: android firebase firebase-realtime-database pojo firebaseui

查询附加到Android中的照片(POJO)的每个评论(POJO)的正确方法是什么。在Firebase中,我有一个照片集的结构:

AppCompatActivity

和评论收集:

"photos" : {
    "-KaeuYf9jXcy4oqpRqbi" : {f
      "entities" : {
        "type" : {
          "image" : {
            "bucket" : "bucket",
            "prefix" : "https://s3-us-west-2.amazonaws.com/",
            "suffix" : "image.jpg"
          }
        }
      },
      "stats" : {
        "liked" : 0
      },
      "text" : "Person Detected!",
      "timestamp" : 1484631194257
    }
}

在Android中,我使用的是FirebaseAdapter,但我无法定义一个只检索附加到特定照片的评论的正确查询。我有照片的关键

"comments" : {
    "-KdE6Hwua8d6sBQimPos" : {
      "attachphoto" : {
        "-KaeuYf9jXcy4oqpRqbi" : true
      },
      "attachuser" : {
        "-KaeuYHjkdf9okflslf" : true
      },
      "displayName" : "Gary",
      "text" : "ok",
      "timestamp" : 1487385995844
    },
    "-KdE6IPc-NL-6zGkwXq3" : {
     "attachphoto" : {
        "-KaeuYf9jXcy4oqpRqbi" : true
      },
      "attachuser" : {
        "-KaeuYHjkdf9okflslf" : true
      },
      "displayName" : "Thomas",
      "text" : "ok",
      "timestamp" : 1487385997735
    }
}

我以为我可以定义类似的内容:

FirebaseListAdapter adapter = new CommentAdapter(this, Comment.class, R.layout.item_comment, QUERY){
            @Override
            protected void populateView(View v, Comment model, int position) {
                if(model.getDisplayName()!=null) {
                    String[] name = model.getDisplayName().split(" ");
                    ((TextView) v.findViewById(R.id.id)).setText(name[0]);
                }
                ((TextView) v.findViewById(R.id.content)).setText(model.getText());
            }
        };

但是我对如何完成这个有一些脱节。使用Firebase的第一个项目,所以任何帮助/提示将非常感谢!

1 个答案:

答案 0 :(得分:0)

Firebase相当没有SQL,因此有一些必须解决的限制......特别是在设计数据结构时。例如,在这种情况下,添加相关用户的ID可能是有意义的。评论(甚至完全相关的评论)到结构的嵌套节点,代表照片。还有其他方法可以实现 - 虽然人们总是需要考虑如何在以后查找详细信息(因为结构决定哪些查询是可能的,哪些不可能)。