Android Firebase-如何获取子节点数据

时间:2018-09-18 14:06:31

标签: android firebase firebase-realtime-database firebaseui

我有一个“ genresComments”节点,该节点将每个用户的评论保存到每个视频ID。就像流派->视频ID->用户ID:数据一样。 我试图获取的是所有用户的ID及其数据(我的意思是数据:comment,profilePicture,用户名)。

多数民众赞成在查询应指向该数据

      Query query = FirebaseDatabase.getInstance().getReference(Params.GENRESCOMMENTS).child(genre).child(videoID);

但是我敢肯定,它仅指向“用户ID”,而没有带给我我需要的内部数据。

我的问题是我如何获取每个“视频ID”的所有“用户ID”和他的数据(评论,profilePicture,用户名)。

编辑

     @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    videoID = getArguments().getString(Params.VIDEOID);
    genre = getArguments().getString(Params.GENRE);

    progressBar.setVisibility(View.VISIBLE);

    if(videoID != null){
        Query query = FirebaseDatabase.getInstance().getReference(Params.GENRESCOMMENTS).child(genre).child(videoID);
        options = new FirebaseRecyclerOptions.Builder<Comment>().setQuery(query,Comment.class).build();
        adapter = new FirebaseRecyclerAdapter<Comment,CommentsViewHolder>(options) {
            @Override
            protected void onBindViewHolder(CommentsViewHolder holder, int position, Comment model) {
                    holder.userName.setText(model.getUserName());
                    holder.comment.setText(model.getComment());
                    Glide.with(getContext()).load(model.getUserProfile()).into(holder.userProfile);
            }

            @Override
            public  CommentsViewHolder  onCreateViewHolder(ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_item,parent,false);
                return new CommentsViewHolder(view) ;
            }
        };

    }
    if(adapter != null) {
        rvComments.setAdapter(adapter);
        rvComments.setLayoutManager(new LinearLayoutManager(getContext()));
    }

}

我将此查询用于回收者视图

enter image description here

1 个答案:

答案 0 :(得分:0)

执行以下代码(可能会出错):首先了解事件监听器

FirebaseDatabase.getInstance().getReference(Params.GENRESCOMMENTS).child(genre).child(videoID).addValueEventListener(new ValueEventListener(Datasnapshot snap){

  for(DataSnapshot s:snap.getChildren()){
         Comment c=s.getValue(Comment.class);
         //c.getPRofilePic  c.getComment();
    }
});


class Comment {
private String comment;
private String profilePic;
private String username;

//getter setter


}