如何添加像计数器Android Studio Firebase



这是数据库链接1任何人都可以帮我添加一个喜欢计数器吗? 它应该显示 no:of 喜欢,并在收回喜欢时将其删除 我的 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);
}

这个增量像计数,但不递减它,我希望它在点击回来时减少

您的问题并不完全清楚,但是如果您正在尝试制作像社交媒体帖子这样的功能,用户可以喜欢并且与帖子不同,这可以提供帮助。

数据结构

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

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

最新更新