【发布时间】:2022-01-14 16:51:29
【问题描述】:
我有一个按钮,它是一个计数器,如果“星星”孩子不正确,则加 1,否则 -1。首先按下执行以下 2 个语句。实际上,我必须将我的 UID 保留在 userkey 孩子中,但在第一次按下被删除的同时,我的明星计数正常添加,它必须从那里删除明星孩子,但这会直接删除我的 UID 存在的任何地方。
final String uid = currentUser.getUid();
DatabaseReference allfeed = db.getReference("allfeed").child(post_key);
allfeed.runTransaction(new Transaction.Handler() {
@NonNull
@Override
public Transaction.Result doTransaction(@NonNull MutableData currentData) {
ExampleItem star = currentData.getValue(ExampleItem.class);
if (star == null) {
return Transaction.success(currentData);
}
if (star.stars.containsKey(uid)) {
star.starCount = star.starCount - 1;
star.stars.remove(uid);
} else {
// Star the post and add self to stars
star.starCount = star.starCount + 1;
star.stars.put(uid, true);
}
currentData.setValue(star);
return Transaction.success(currentData);
}
@Override
public void onComplete(@Nullable DatabaseError error, boolean committed, @Nullable DataSnapshot currentData) {
}
});
public class ExampleItem {
public ExampleItem(){
}
String userid,key,reply,time,text,username;
public int starCount = 0;
public Map<String, Boolean> stars = new HashMap<String, Boolean>();
//
// GETTER AND SETTER
//
public Map<String, Object> toMap() {
HashMap<String, Object> result = new HashMap<>();
result.put("keyuser", userid);
result.put("username", username);
result.put("text", text);
result.put("key", key);
return result;
}
}
【问题讨论】:
-
请编辑您的问题并添加您的
ExampleItem课程的内容。 -
已编辑并添加感谢
标签: java android firebase firebase-realtime-database google-cloud-platform