如何在firebase自动生成的密钥下编辑子值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在firebase自动生成的密钥下编辑子值相关的知识,希望对你有一定的参考价值。
我正在尝试在我的数据库中编辑“shopB”的值。我在视图持有者中这样做,使用带有编辑文本字段和批准按钮的对话框。当用户单击特定事务时,会为其提供一个对话框,在该对话框中输入shopB的值,然后单击“批准”。
我正在努力做到这一点,因为我无法访问该值,因为firebase具有唯一生成的密钥。我有很多与我有类似问题的帖子,但由于我在视图持有者中这样做,我看不出我如何使用DataSnapshot。任何帮助都会非常感激,因为我很迷茫。
viewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(android.view.View view, int position, boolean isLongClick) {
Toast.makeText(Request.this, "Receiving: " + shopA, Toast.LENGTH_SHORT).show();
ThisDialog = new Dialog(Request.this);
ThisDialog.setContentView(R.layout.dialog_template);
final EditText Write = (EditText) ThisDialog.findViewById((R.id.write));
Button Approve = (Button) ThisDialog.findViewById(R.id.approve);
Write.setEnabled(true);
Approve.setEnabled(true);
Approve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String newShopB = Write.getText().toString().replace(".", " ");
transaction.child("key").child("shopB").setValue(newShopB);
Toast.makeText(Request.this, "CustB Approval", Toast.LENGTH_SHORT).show();
ThisDialog.cancel();
}
});
ThisDialog.show();
}
});
这将是我的代码,但显然我有“transaction.child(”key“)”找不到密钥。
哦,事务在我的代码中早先定义为
database = FirebaseDatabase.getInstance();
start = database.getReference("Transaction");
transaction = start.child(passedEmail);
答案
这是解决项目变通方法的可能方法:
start.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.child(key).getChildren()) {
//insert additional codes here
}
}
});
以上是关于如何在firebase自动生成的密钥下编辑子值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cloud Functions for Firebase 获取子值的键?