我正在firebase
中开发一个Android
项目,需要在列表视图中显示所有用户的所有信息。(对于以下情况,我提供了图片,我的列表视图将具有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。我指的是教程,但它们不能解决我的问题。
答案 0 :(得分:1)
使用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),但是它可以' t 显示所有用户的单个交易列表,因为您的数据库中没有该列表。
如果要使用后者,则需要创建自己的适配器,或者将所有用户的交易作为单个列表存储在数据库中。例如,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