我正在开发一个 firebase
项目Android
我需要在 ListView 中显示所有用户的所有信息。(对于以下我提供图像的情况,我的 ListView 将有 4 个信息字段。)
但我不知道该怎么做。我不明白如何获取 database reference
以下字段标记为绿色(在提供的图像中,对于用户 2,它将与用户 1 相同,只是我没有扩展节点)以及如何拥有循环结构做同样的事情。
顺便说一句,这就是我将数据输入 Firebase 数据库的方式:
在MyActivity.java中
private void sendUserData()
{
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase.getReference(firebaseAuth.getUid()).child("Deals");
UserProfile userProfile = new UserProfile(
firebaseAuth.getUid(),
name.getText().toString(),
contact.getText().toString(),
address.getText().toString(),
startDate.getText().toString(),
endDate.getText().toString()
);
databaseReference.child(formatter.format(date)).setValue(userProfile);
}
现在,我想要检索,但我不知道如何检索,因为我以前从未使用过 Firebase。我指的是教程,但它们不能解决我的问题。
最佳答案
使用 Firebase 时,如果您想显示某些内容的列表,则数据库中必须有这些内容的列表。因此,如果您想显示用户列表,则数据库中应该有一个用户列表(您确实这样做了)。这意味着您可以使用如下监听器轻松向所有用户显示:
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference();
usersRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
System.out.println(userSnapshot.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
您还可以在 onDataChange
中循环遍历每个用户的子节点:
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
System.out.println(userSnapshot.getKey());
for (DataSnapshot dealSnapshot: userSnapshot.child("Deals").getChildren()) {
System.out.println(dealSnapshot.getKey());
}
}
}
您会注意到,我们现在使用两个嵌套循环,因为数据有两层深。
要在您的应用中显示数据,您需要将数据添加到适配器。对于许多用例,您可以使用 adapters from FirebaseUI ,它可以显示列表中的数据。例如,这可以与您的数据结构一起使用来显示用户列表。
但是,FirebaseUI 中的适配器要求您显示的数据位于单个列表中。因此它可以显示用户列表,它可以显示特定用户的交易列表(参见this question for an example),但它不能 显示所有用户的单一交易列表,因为您的数据库中没有该列表。
如果您想要执行后者,则您需要创建自己的适配器,或者需要将所有用户的交易作为单个列表存储在数据库中。例如,FirebaseUI 适配器可以显示具有以下结构的 Deals
:
Deals
deal1id: { user: "userId1", ... }
deal2id: { user: "userId2", ... }
deal3id: { user: "userId1", ... }
deal4id: { user: "userId2", ... }
UserDeals
userId1
deal1id: true
deal3id: true
userId2
deal2id: true
deal4id: true
关于java - 如何访问 Firebase 数据库的这些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52344725/