我也看到过类似的问题,但到目前为止,没有一个答案对我有帮助。 我有一个用户ID密钥,在每个帖子中,我都有一个密钥,我想为每个帖子实现类似功能,但是当尝试检索特定帖子的密钥时,由于onChildAdded方法,我会得到最后一个密钥被所有孩子召集一次,但我想要该特定帖子的键。
likeReference = FirebaseDatabase.getInstance().getReference().child("Post").child(uid);
likeReference.keepSynced(true);
likeReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Log.i("onChildAdded", "Method invoked");
//progressBar.setVisibility(View.VISIBLE);
Post post = dataSnapshot.getValue(Post.class);
String key = dataSnapshot.getKey();
secondReference = likeReference.child(key);
//progressBar.setVisibility(View.INVISIBLE);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("Like:","Like clicked");
if(post.isLiked()){
post.setLiked(false);
secondReference.child("liked").setValue(post.isLiked());
like.setImageResource(R.drawable.ic_thumb_up);
}else{
post.setLiked(true);
secondReference.child("liked").setValue(post.isLiked());
like.setImageResource(R.drawable.like);
}
}
});