我已经在应用中创建了一个“赞”按钮。当用户单击“赞”按钮时,将创建一个带有孩子(随机密钥)的名为“喜欢帖子”的节点,您可以在其中保存帖子的详细信息,就像在图像中看到的那样。但是,当我再次单击“赞”按钮时,该节点应按照标准被删除。但是,这没有发生。
这是我的代码:
holder.fav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (sharedPreferences.contains(Title)) {
holder.fav.setBackgroundResource(R.drawable.unfavorited);
sharedPreferences.edit().remove(Title).apply();
String id = likesReference.push().getKey();
FirebaseDatabase.getInstance().getReference("Users").child(firebaseAuth.getUid()).child("Liked Posts").child(id).removeValue();
Toast.makeText(context, "Removed from Favorites !", Toast.LENGTH_SHORT).show();
} else {
holder.fav.setBackgroundResource(R.drawable.favorited);
sharedPreferences = context.getSharedPreferences("FavNews", MODE_PRIVATE);
myEditor = sharedPreferences.edit();
myEditor.putString(Title, Title);
myEditor.apply();
likesReference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseAuth.getUid()).child("Liked Posts");
Toast.makeText(context, "Added to Bookmarks", Toast.LENGTH_SHORT).show();
likesReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
HomeModel homeModel1 = new HomeModel(holder.newsTitleTextView.getText().toString().trim(), holder.newsDetailTextView.getText().toString().trim(),
holder.timesAgo.getText().toString().trim(), homeModel.getNewsImage(), homeModel.viewCounts);
String id = likesReference.push().getKey();
Log.e("KEY IS", id); //right one
likesReference.child(id).setValue(homeModel1);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
如何删除“喜欢的帖子”?
作为firebase documentation状态,对于array
字段,应使用arrayRemove
功能:
washingtonRef.update("regions", FieldValue.arrayRemove("east_coast"))