Число детей в базе данных Firebase - PullRequest
1 голос
/ 13 марта 2019

Я разрабатываю приложение для Android, которое получает данные из базы данных Firebase Realtime. Здесь - это снимок моей базы данных.

Я хочу указать количество детей в поле Comments.

Вот мой код:

public static class PostsViewHolder extends RecyclerView.ViewHolder
{
    View mView;

    ImageButton commentPostButton;
    TextView DisplayNoOfInterest;
    int countComments;
    String currentUserId;
    DatabaseReference CommentsRef;

    public PostsViewHolder(View itemView)
    {
        super(itemView);
        mView = itemView;

        commentPostButton = (ImageButton) 
        mView.findViewById(R.id.commentPost);
        DisplayNoOfInterest = (TextView) mView.findViewById(R.id.interest);

        CommentsRef = FirebaseDatabase.getInstance().getReference();
        currentUserId = FirebaseAuth.getInstance().getCurrentUser().getUid();

    }

    public void setCommentStatus() {
        CommentsRef.child("Posts").child("Comments").addValueEventListener(new ValueEventListener())
        {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot){
                 if(dataSnapshot.exists()){
                     countComments = (int) dataSnapshot.getChildrenCount();
                     int cc = Integer.toString(countComments)
                     DisplayNoOfInterest.setText(cc);
                 }
            }
      }
}

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Попробуйте это

FirebaseDatabase.getInstance().getReference().child("Posts").child(yourPostId).child("Comments").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists())
                {
                    DisplayNoOfInterest.setText(""+dataSnapshot.getChildrenCount());
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Я надеюсь, что это может помочь вам!

Спасибо.

0 голосов
/ 13 марта 2019

Ваша ссылка неверна. Вам нужно передать postID, прежде чем пытаться получить комментарии, потому что узел комментариев находится под каждым postID.

После ссылки на правый узел вы можете позвонить: dataSnapshot.getChildrenCount()

Пример:

CommentsRef.child("Posts").child(POSTID).child("Comments").addValueEventListener(new ValueEventListener()){ 
    @Override
    public void onDataChange(DataSnapshot dataSnapshot){
        if(dataSnapshot.exists()){

            countComments = (int) dataSnapshot.getChildrenCount();
        }
        DisplayNoOfInterest.setText(Integer.toString(countComments));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...