如何在firebase android中添加新的数据 [英] How to add new data in firebase android

查看:150
本文介绍了如何在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);

Check the doc:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆