这是数据库链接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
...
您可以将其分为三个部分:
要显示帖子的喜欢数,
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) { } }); }
打开喜欢点击
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) { } }); }
通过这种方式,您可以让用户喜欢和不喜欢帖子,并显示喜欢的总数。 希望对您有所帮助!