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

问题描述 投票:0回答:1

我有“genresComments”节点,可以为每个视频ID保存每个用户的评论。它就像Genre - >视频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

android firebase firebase-realtime-database firebaseui
1个回答
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


}
© www.soinside.com 2019 - 2024. All rights reserved.