本文介绍了如何在firebase android中添加新数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我在 firebase 实时数据库中添加新人的逻辑.但它只是用新数据更新旧数据,而不是创建新条目.

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()+"
Address: "+person.getAddress()+"

";

                //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?

推荐答案

您总是使用相同的参考

 Person person = new Person();
 //Adding values
 person.setName(name);
 person.setAddress(address);
 ref.child("Person").setValue(person);

检查文档:

以这种方式使用 setValue() 会覆盖指定位置的数据,包括任何子节点.

在您的情况下,由于这个原因,您覆盖了相同的数据.

In your case you are overriding the same data for this reason.

每次将新子项添加到指定的 Firebase 引用时,您都应该使用 push() 方法生成唯一 ID.

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);
 DatabaseReference newRef = ref.child("Person").push();
 newRef.setValue(person);

这篇关于如何在firebase android中添加新数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-29 04:20
查看更多