如何在firebase android中添加新数据

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)