从Firebase检索数据作为列表

时间:2017-09-07 12:14:25

标签: android listview firebase firebase-realtime-database

我希望能够检索当前保存在Firebase子文件夹中的所有内容。我这样写数据库;

    private void commitPost() {
    final String commentInput = commentText.getText().toString().trim();
    commentProgress.setMessage("Posting");
    commentProgress.show();

    String uniqueId = UUID.randomUUID().toString();
    commentDB.child(postID).child("Comments").child(uniqueId).setValue(commentInput);
    commentProgress.dismiss();
    finish();
}

我希望能够读取子文件夹中当前保存的所有值,然后最终在ListView中显示它们。

数据库JSON;

  "Engagement" : {
"-Kne46iBe6ooNFKTv_8w" : {
  "Comments" : {
    "c323835c-290c-44f3-8070-f9febf698ec9" : "none now!",
    "stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "testing"
  },
  "Likers" : {
    "stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "email@email.com"
  }

1 个答案:

答案 0 :(得分:2)

要仅从特定节点获取数据,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference engagementRef = rootRef.child("Engagement").child("-Kne46iBe6ooNFKTv_8w").child("Comments");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String value = ds.getValue(String.class);
            Log.d("TAG", value + ", ");
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
engagementRef.addListenerForSingleValueEvent(eventListener);

您的输出将是:

none now!, testing,