【发布时间】:2021-09-03 14:11:32
【问题描述】:
我有一个 activity 将活动时间数据注册到我的 Firebase 实时数据库,这是使用 EditText 手动输入的,然后在 UI 中将其显示到 TextView。这一切都很好,但是,如果我要放入更多数据,它将简单地替换数据库中的值和TextView。
我之前在另一个活动 (Adding (Sum) multiple Firebase child values together to give a total value?) 中做过类似的事情,但是,这个活动有额外的带有日期等的节点,所以同样的方法在我当前的活动中不起作用。理想情况下,我会用 dateStrings 等组织这个节点,但是,出于演示目的,这不是必需的。因此,我只想获取数据库中已经存在的任何值并将输入值添加到其中,然后将其恢复到数据库中。
这可能很简单,但我一直盯着它看太久了,我自己都糊涂了。这远非正确,但对我的下一步有点困惑。我可能已经看到了类似how to sum money value in firebase realtime android studio 的内容,但想知道这是否是最简单的方法?
注册Activity方法:
registerActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String activityTime = activeMinutes.getText().toString().trim();
databaseReference.child("active time").setValue(activityTime);
addActivity.setVisibility(View.VISIBLE);
registerActivity.setVisibility(View.GONE);
activeTimeTI.setVisibility(View.GONE);
}
});
显示数据的方法(缩短):
databaseReference.addValueEventListener(new ValueEventListener() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int total = 0;
String activityTime = dataSnapshot.child("active time").getValue(String.class);
if (activityTime == null) {
activeTimeTV.setText("0");
} else {
total += Integer.parseInt(activityTime);
activeTimeTV.setText(String.valueOf(total) + " minutes");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("TAG", "onCancelled", databaseError.toException());
}
});
Firebase 层次结构:
【问题讨论】:
-
我不确定我是否理解。是否要更新数据库中的字段?如果这是您想要的,希望更新哪个字段?
-
例如.. 在层次结构上,活动时间刚刚为 500(分钟),如果我再进行 90 分钟的活动,我想将 90 添加到该值,然后更新它显示 590。
标签: java android firebase firebase-realtime-database google-cloud-platform