【发布时间】:2021-07-17 19:11:48
【问题描述】:
如何通过 Android 应用程序将子项添加到 Firebase 数据库中的现有数据?这是我的 Firebase 数据库的样子:
我希望能够将数据作为子项保存到图像中的父值,以便我可以拥有值列表。问题是我不知道如何从我的应用程序中使用自动生成的 id 来获取这些现有值,我希望能够将一个值作为子项保存到微调器中当前选择的值中。
以下是将“列表”推送到数据库的代码:
private void onAddListClick()
{
String text = listEditText.getText().toString();
String refPath = "CategoryList";
if (text.trim().length() > 0)
{
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference(refPath);
myRef.push().setValue(text);
listEditText.getText().clear();
finish();
} else
{
//...
}
}
这是应该根据微调器选择将值/任务保存在正确列表中的代码:
private void onAddTaskClick()
{
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("CategoryList");
String text = taskEditText.getText().toString();
String spinnerValue = spinner.getSelectedItem().toString();
if (text.trim().length() > 0)
{
list.add(new Task(text));
recyclerViewAdapter.notifyDataSetChanged();
taskEditText.getText().clear();
//Change me!!
//myRef.push().setValue(text);
} else
{
//...
}
}
编辑: 我的问题的一个可能解决方案是获取自动生成的 id,然后将一个子项添加到该现有值。我知道在将值推送到数据库时立即获取 id 的答案还有其他问题,但是当我想稍后将孩子添加到现有值时,我希望能够获取 id。
【问题讨论】:
-
我不确定我是否理解问题所在。当您运行共享的代码时,它会做什么?你希望它做什么?
-
这段代码中到底有什么不符合您的预期?告诉我们共享代码有什么问题。你有什么错误吗?请回复@。
-
@FrankvanPuffelen 当
onAddTaskClick()运行时,我希望它将文本作为子项保存到微调器中选择的列表中,例如,我希望将其作为子项保存到“上图中的列表”。现在,当//Change me!!注释下的代码运行时,它只是将值作为新值推送到 Firebase 数据库中。我希望更改该行,以便将值作为子项保存到列表中。希望这是有道理的。 -
@AlexMamo 代码没有给我任何错误,但它没有给我想要的结果。在上面的示例中,我目前有两个列表,在应用程序中,我在微调器中选择其中一个列表,我希望能够将任务添加到该特定列表,以便添加的任务将作为子任务保存到该列表在 firebase 数据库中,我希望它是列表的子值,而不是仅仅在列表旁边推送一个新值。希望能澄清我的问题和期望的结果。
标签: java android firebase firebase-realtime-database