如何在firebase android中添加新的数据 [英] How to add new data in firebase android
问题描述
这是我在firebase实时数据库中添加新人的逻辑。而不是新建一个条目,只是更新旧数据。
buttonSave.setOnClickListener(new View.OnClickListener (){
public void onClick(View v){
$ b / *
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();
//创建Person对象
Person person = new Person();
//增加值
person.setName(name);
person.setAddress地址);
ref.child(Person).setValue(person);
}
});
$ b $ new Firebase(Config.FIREBASE_URL).addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot snapshot){
for (DataSnapshot postSnapshot:snapshot.getChildren()){
//从快照获取数据
Person person = postSnapshot.getValue(Person.class);
//添加到字符串
String string =Name:+ person.getName()+\\\
Address:+ person.getAddress()+\\\
\\\
;
//在textview上显示它
textViewPersons.setText(string);
}
}
$ b $ @Override
public void onCancelled(FirebaseError firebaseError){
System.out.println(The read failed:+ firebaseError.getMessage());
}
});
这里有什么问题?任何人都可以帮助我吗?
您总是使用相同的参考
Person person = new Person();
//增加值
person.setName(name);
person.setAddress(address);
ref.child(Person)。setValue(person);
检查文档:
lockquote
使用setValue()方法覆盖指定位置的数据包括任何子节点。
在这种情况下,您覆盖了相同的数据。
每次将新的子元素添加到指定的Firebase引用时,您应该使用 push()
方法生成唯一的ID。
Person person = new Person();
//增加值
person.setName(name);
person.setAddress(address);
Firebase newRef = ref.child(Person)。push();
newRef.setValue(person);
This is my logic for adding new person in firebase realtime databse. But instead of making a new entry it is just updating the old data with new one.
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());
}
});
What is wrong here? Can anyone help me on this?
You are using always the same ref
Person person = new Person();
//Adding values
person.setName(name);
person.setAddress(address);
ref.child("Person").setValue(person);
Using setValue() in this way overwrites data at the specified location, including any child nodes.
In your case you are overriding the same data for this reason.
You should use the push()
method to generate a unique ID every time a new child is added to the specified Firebase reference.
Person person = new Person();
//Adding values
person.setName(name);
person.setAddress(address);
Firebase newRef = ref.child("Person").push();
newRef.setValue(person);
这篇关于如何在firebase android中添加新的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!