use*_*471 12 android firebase firebase-realtime-database
这是我在firebase实时数据库中添加新人的逻辑.但是,不是创建新条目,而是使用新数据更新旧数据.
buttonSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/*
new Firebase(Config.FIREBASE_URL)
.push()
.child("title")
.setValue(text.getText().toString());
*/
Firebase ref = new Firebase(Config.FIREBASE_URL);
String name = editTextName.getText().toString().trim();
String address = editTextAddress.getText().toString().trim();
//Creating Person object
Person person = new Person();
//Adding values
person.setName(name);
person.setAddress(address);
ref.child("Person").setValue(person);
}
});
new Firebase(Config.FIREBASE_URL).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
//Getting the data from snapshot
Person person = postSnapshot.getValue(Person.class);
//Adding it to a string
String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n";
//Displaying it on textview
textViewPersons.setText(string);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
Run Code Online (Sandbox Code Playgroud)
这有什么不对?谁可以帮我这个事?
Gab*_*tti 29
你总是使用相同的参考
Person person = new Person();
//Adding values
person.setName(name);
person.setAddress(address);
ref.child("Person").setValue(person);
Run Code Online (Sandbox Code Playgroud)
检查文档:
以这种方式使用setValue()会覆盖指定位置的数据,包括任何子节点.
在您的情况下,由于这个原因,您将覆盖相同的数据.
push()每次将新子项添加到指定的Firebase引用时,都应使用该方法生成唯一ID.
Person person = new Person();
//Adding values
person.setName(name);
person.setAddress(address);
DatabaseReference newRef = ref.child("Person").push();
newRef.setValue(person);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45362 次 |
| 最近记录: |