【问题标题】:How to add like counter Android Studio Firebase如何添加点赞计数器 Android Studio Firebase
【发布时间】:2018-07-12 14:31:59
【问题描述】:

this is the database link 1任何人都可以帮我添加一个喜欢的计数器。请 它应该显示点赞数,并在点赞被收回时将其关闭 我的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);
}

这个增量类似于 count 但不会减少它我希望它在点击返回时减少

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    您的问题并不完全清楚,但如果您尝试制作社交媒体帖子之类的功能,用户可以喜欢而不是帖子,这会有所帮助。

    数据结构

    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) {
      
              }
          });
      }
      

    通过这种方式,您可以让您的用户喜欢和不喜欢帖子并显示喜欢的总数。 希望对您有所帮助!

    【讨论】:

    • 谢谢先生,但是当我不喜欢节点被删除时,这有一个小问题..所以说如果有 2 个用户喜欢它,然后其中一个按回(不喜欢)然后整个节点被删除了..实际上我只想在用户再次按下喜欢按钮时从整个喜欢计数中减去 1
    • 你能在问题中添加你的数据库结构吗?如果您使用实际数据解释确切的场景将会很有帮助。
    • 帖子 -LGEF7JPjhzROruGct_E -image: -likecnt -likecnt: -likes: -time: -user:
    • @AryaPrabagar 这没有帮助。可以用一些解释把它放在一个公平的图像中
    • 先生,我添加了图片链接
    猜你喜欢
    • 2019-03-22
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多