在Android中将多个项目写入firebase

时间:2016-11-29 07:33:05

标签: android firebase firebase-realtime-database

我使用Firebase作为后端编写了一个Android应用程序。我的问题是只有一个项目可以存储在Firebase中,当我尝试编写更多数据时,它会替换现有数据。我想写多个位和数据,并在列表视图或其他东西中检索它们。

我的代码如下:

public class Capture_Meetings extends AppCompatActivity {

private EditText editTextName;
private EditText editTextAddress;
private EditText editDateTime;
private TextView textViewPersons;
private Button buttonSave;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_capture__meetings);

    Firebase.setAndroidContext(this);

    buttonSave = (Button) findViewById(R.id.buttonSave);
    editTextName = (EditText) findViewById(R.id.editTextName);
    editTextAddress = (EditText) findViewById(R.id.editTextAddress);
    editDateTime = (EditText) findViewById(R.id.editDateTime);

    textViewPersons = (TextView) findViewById(R.id.textViewPersons);

    buttonSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Creating firebase object
            Firebase ref = new Firebase(Config.FIREBASE_URL);

            //Getting values to store
            String name = editTextName.getText().toString().trim();
            String address = editTextAddress.getText().toString().trim();
            String DateTime = editDateTime.getText().toString().trim();

            //Creating Person object
            final MeetingUser person = new MeetingUser();

            //Adding values
            person.setName(name);
            person.setAddress(address);
            person.setDateTime(DateTime);

            //Storing values to firebase
            ref.child("Person").setValue(person);


            //Value event listener for realtime data update
            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot)
                {
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                        //Getting the data from snapshot
                        MeetingUser person = postSnapshot.getValue(MeetingUser.class);

                        //Adding it to a string
                        String string = "\n Name of School: "+person.getName()+"\n Date:"+ person.getDateTime()+"\nMeeting Notes: "+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());
                }
            });

        }
    });
}

3 个答案:

答案 0 :(得分:3)

查看Firebase documentation.您可以使用push方法将数据附加到节点,该节点将具有唯一ID。

答案 1 :(得分:1)

在Firebase中,您无法在一个孩子下存储多个项目/值。但是,您可以根据需要使用单个值生成尽可能多的子项(子项)。只需使用标签s.a制作孩子。 “地址”和“名称”及其各自的值。

答案 2 :(得分:1)

为了避免覆盖数据,我们可以通过以下方式使用 push() 方法-

来自您的代码 -

ref.child("Person").setValue(person);

只需将 push() 放在 setValue() 方法之前,即 -

ref.child("Person").push().setValue(person);

它会避免覆盖,并且会为您存储在 Person 下的每个数据创建一个唯一的 ID。