Как добавить счетчик лайков Android Studio Firebase - PullRequest
0 голосов
/ 28 июня 2018

это ссылка на базу данных 1 Может кто-нибудь помочь мне добавить счетчик подобного к этому. Пожалуйста, пожалуйста он должен отображать no: лайков и убивать его, когда лайк возвращается мой код Java ниже

 private void onLikeClicked(View v) {
    boolean isLiked = !btnLike.isSelected();
    final String currentUserKey = User.currentKey();

    DatabaseReference likes = FirebaseDatabase.getInstance().getReference().child(Const.kDataLikeKey);
    DatabaseReference curLike = likes.child(mPostRef.getKey()).child(currentUserKey).child("liked");

    // update Model
    curLike.setValue(isLiked);

    // update UI
    btnLike.setSelected(isLiked);
}

Это увеличение подобно счетчику, но не уменьшает его Я хочу, чтобы оно уменьшалось при нажатии назад

1 Ответ

0 голосов
/ 29 июня 2018

Ваш вопрос не совсем понятен, но если вы пытаетесь создать такую ​​функциональность, как публикация в социальных сетях, где пользователям может понравиться публикация, а в отличие от нее - это может помочь.

Структура данных

Post-> postId -> likes -> 1 
              ...

Вы можете разделить его на три части:

  1. Чтобы отобразить количество лайков к сообщению, postId & текущему пользователю, userId1, понравился ваш пост или нет

    public void displayNumberOfLikes(String postId, String currentUserId){
        DatabaseReference likesRef = FirebaseDatabase.getInstance().getReference().child('Post').child(postId);
        likesRef.addValueEventListener(new ValueEventListener(){
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists()){
                    long numOfLikes = 0;
                    if(dataSnapshot.hasChild("likes")){
                        numOfLikes = dataSnapshot.child("likes").getValue(Long.class);
                    }
    
                    //Populate numOfLikes on post i.e. textView.setText(""+numOfLikes)
                    //This is to check if the user has liked the post or not
                    btnLike.setSelected(dataSnapshot.hasChild(userId));
                }
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    }
    
  2. Вкл нажал

    public void onLikeClicked(View v, String postId, String userId){
        DatabaseReference likesRef = FirebaseDatabase.getInstance().getReference().child('Post').child(postId).child("likes");
        likesRef.addListenerForSingleValueEvent(new ValueEventListener(){
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                long numLikes = 0;
                if(dataSnapshot.exists()){
                    numLikes = dataSnapshot.getValue(Long.class);
                }
                boolean isLiked = btnLike.isSelected();
                if(isLiked){
                   //If already liked then user wants to unlike the post
                   likesRef.set(numLikes-1);
                }else {
                   //If not liked already then user wants to like the post
                   likesRef.set(numLikes+1);
                }
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    }
    

Таким образом, вы можете сделать своего пользователя похожим и не похожим на пост, а также отобразить общее количество лайков. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...