我使用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());
}
});
}
});
}
答案 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。