Ваш вопрос не совсем понятен, но если вы пытаетесь создать такую функциональность, как публикация в социальных сетях, где пользователям может понравиться публикация, а в отличие от нее - это может помочь.
Структура данных
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) {
}
});
}
Таким образом, вы можете сделать своего пользователя похожим и не похожим на пост, а также отобразить общее количество лайков.
Надеюсь, это поможет!