java - 如何在 Firebase 自动生成的密钥下编辑子值
问题描述
我正在尝试在我的数据库中编辑“shopB”的值。我在视图持有者内这样做,通过使用带有编辑文本字段和批准按钮的对话框。当用户点击特定交易时,他们会看到一个对话框,他们可以在其中输入 shopB 的值,然后单击 Approve。
我正在努力做到这一点,因为我无法访问该值,因为 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
}
}
});
推荐阅读
- python - 将表单数据从 React 句柄提交函数发布到 python API?
- diff - 如何显示两个文件的差异,但只显示具有共同起始字符串的行?
- objective-c - 用触摸板放大一个点(在opengl或metalkit中用Objective-C使用缩放和平移和旋转)
- php - 转换十六进制字符串时出现奇怪的字符
- c++ - C++ 或 Rcpp:没有循环的两个向量的比较
- python-3.x - python3:在没有外部设置 PYTHONIOENCODING 的情况下强制 stdout/stderr 使用 utf-8?
- docker - 撰写文件不适用于部署
- solr - Solr8.0.0日期搜索问题
- php - 在 url 变量上使用 preg_replace
- python - Pandas 中的应用方法无法处理函数