gpt4 book ai didi

android - 如何在 firebase 数据库中添加新数据后获取所有数据

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:12 25 4
gpt4 key购买 nike

这是我在 firebase 中添加人员对象的代码。

    FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Person");


buttonSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {

String name = editTextName.getText().toString().trim();
String address = editTextAddress.getText().toString().trim();

//Creating Person object
Person person = new Person();
person.setName(name);
person.setAddress(address);
new Firebase(Config.FIREBASE_URL).child("Person").push().setValue(person);
}
});

myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.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(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getMessage());
}
});

添加数据工作正常,每次添加都会为人员创建一个新 key 。

但是 addValueEventListener 只显示最后添加的条目。我想要所有的条目数据。

谁能帮我解决这个问题?

最佳答案

每当 Person 节点发生任何变化时,您都会通过 onDataChange() 收到通知。在那里你遍历人们然后为每个电话:

textViewPersons.setText(string);

因此,您不断地用每个人的信息替换 TextView 的内容。在每个循环之后,它最终将只显示最后一个用户的信息。通过添加以下内容,您可以很容易地看到代码循环遍历所有人:

System.out.println(string);

有了这个,您将在 logcat 中看到每个人,但在 TextView 中只能看到最后一个人。

一种解决方案是使用 ListViewRecyclerView,它们都处理项目列表。另一种(实现起来更快)向所有用户展示在 TextView 中附加字符串的方法:

textViewPersons.setText(textViewPersons.getText()+string+"\n");

关于android - 如何在 firebase 数据库中添加新数据后获取所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37563993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com