Android 使用recycler视图更新实时数据库中的特定项
实际上,我想使用firebase实时数据库更新recycler视图中的特定项目。我已经创建了一个模式,并将其包含在我的java文件中。 但我无法更新firebase实时数据库中的任何项目,该数据库已使用“添加项目”按钮保存 首先,我尝试获取特定的项目id,但它总是返回random key,而不是选中单击时项目的键。 我只想更新所选当前产品项的现有记录中的productdescription和product rate UpdateActivity.javaAndroid 使用recycler视图更新实时数据库中的特定项,android,firebase-realtime-database,Android,Firebase Realtime Database,实际上,我想使用firebase实时数据库更新recycler视图中的特定项目。我已经创建了一个模式,并将其包含在我的java文件中。 但我无法更新firebase实时数据库中的任何项目,该数据库已使用“添加项目”按钮保存 首先,我尝试获取特定的项目id,但它总是返回random key,而不是选中单击时项目的键。 我只想更新所选当前产品项的现有记录中的productdescription和product rate UpdateActivity.java mStorageRef = Fireba
mStorageRef = FirebaseStorage.getInstance().getReference("Products");
mDatabaseRef = FirebaseDatabase.getInstance().getReference()
.child("Products");
产品是firebase中的表名
private void update_item_actual() {
String productdescription = updateproductdescription.getText()
.toString();
String productrate = updateproductrate.getText().toString();
String key = mDatabaseRef.child("Products").push().getKey();
//I need to perform update here
}
存储模式
包装模型
public class StorageSchema {
private String productdescription;
private int rate;
private int position;
private String key;
public StorageSchema(){
//empty constructor needed
}
public StorageSchema(int position){
this.position=position;
}
public StorageSchema(String productdescription, int rate){
if(productdescription.trim().equals("")){
productdescription = "No Name";
}
this.productdescription = productdescription;
this.rate = rate;
}
public String getProductdescription() {
return productdescription;
}
public int getRate() {
return rate;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
此代码
String key=mDatabaseRef.child(“产品”).push().getKey()
将生成一个新的唯一ID。如果要更新现有产品,则需要知道该现有产品的密钥
有两种方法可以知道要更新的产品的密钥:
DataSnapshot.getValue()
时“简单地”传递DataSnapshot.getKey()
获得产品/子节点的密钥后,可以使用以下内容更新其数据:
private void update_item_actual() {
String productdescription = updateproductdescription.getText()
.toString();
String productrate = updateproductrate.getText().toString();
String key = "-Lckhadu10a9813"; // TODO: use the key you passed along or looked up
Map<String, Value> values = new HashMap<>();
values.put("productdescription", productdescription);
values.put("rate", productrate);
mDatabaseRef.child(key).updateChildren(values);
}
private void update\u item\u actual(){
字符串productdescription=updateproductdescription.getText()
.toString();
字符串productrate=updateproductrate.getText().toString();
String key=“-Lckhadu10a9813”//TODO:使用传递或查找的密钥
映射值=新的HashMap();
value.put(“productdescription”,productdescription);
价值。投入(“比率”,生产率);
mDatabaseRef.child(键).updateChildren(值);
}