Firebase UI - 如何将 ListView 与复杂数据同步
Firebase UI - How to synchronize a ListView with complex data
我正在为 Android 编写一个应用程序,其中有事件和用户。
一个活动有很多用户,一个用户有很多活动。
所以我的数据库结构如下:
- events
- <event_id>
- ...
- users
- <user_id1>
- <user_id2>
- ...
- users
- <user_id1>
- <user_detail1>
- <user_detail2>
- ...
- <user_id2>
- <user_detail1>
- <user_detail2>
- ...
现在,我有一个带有 ListView 的 Activity,并且我使用 FirebaseListAdapter 成功地显示了 FirebaseUI 的所有事件列表。
我有第二个 Activity,我想在其中显示事件详细信息,另一个 ListView 显示该事件的用户列表。
我的问题是:如果我使用 FirebaseListAdapter,我只能显示 user_id,如何检索用户详细信息并在 ListView 中显示它们?
编辑
更准确地说,我希望将特定事件的用户列表链接到 ListView。我想为此使用 FirebaseListAdapter,所以目前我的代码如下所示:
fireAdapter = new FirebaseListAdapter<String>(
this,
String.class,
android.R.layout.simple_list_item_1,
mRootRef.child("events").child("users") //here I have all user_id that I want to retrieve details for
) {
@Override
protected void populateView(View v, String model, int position) {
//the string "model" will now have a user_id
TextView userName = (TextView)v.findViewById(android.R.id.text1); //I want to populate this field
String usernameString;
//How do I get to retrieve the username from user_id into this variable?
userName.setText(usernameString);
}
};
要获取用户详细信息,您可以将侦听器附加到用户 ID。侦听器将自动调用 onChildAdded()
或 onChildChanged()
方法。对于您的情况,由于您只是第一次需要信息,因此您可以使用方法 dataSnapshot.getChildren()
使用函数中返回的快照检索所有值,并使用函数 [=14= 获取确切值]
如需完整参考,请查看 Link。
您的代码可能如下所示
private DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child('users').child('user_id1').setChildListener(ListenerName);
我正在为 Android 编写一个应用程序,其中有事件和用户。
一个活动有很多用户,一个用户有很多活动。
所以我的数据库结构如下:
- events
- <event_id>
- ...
- users
- <user_id1>
- <user_id2>
- ...
- users
- <user_id1>
- <user_detail1>
- <user_detail2>
- ...
- <user_id2>
- <user_detail1>
- <user_detail2>
- ...
现在,我有一个带有 ListView 的 Activity,并且我使用 FirebaseListAdapter 成功地显示了 FirebaseUI 的所有事件列表。
我有第二个 Activity,我想在其中显示事件详细信息,另一个 ListView 显示该事件的用户列表。
我的问题是:如果我使用 FirebaseListAdapter,我只能显示 user_id,如何检索用户详细信息并在 ListView 中显示它们?
编辑
更准确地说,我希望将特定事件的用户列表链接到 ListView。我想为此使用 FirebaseListAdapter,所以目前我的代码如下所示:
fireAdapter = new FirebaseListAdapter<String>(
this,
String.class,
android.R.layout.simple_list_item_1,
mRootRef.child("events").child("users") //here I have all user_id that I want to retrieve details for
) {
@Override
protected void populateView(View v, String model, int position) {
//the string "model" will now have a user_id
TextView userName = (TextView)v.findViewById(android.R.id.text1); //I want to populate this field
String usernameString;
//How do I get to retrieve the username from user_id into this variable?
userName.setText(usernameString);
}
};
要获取用户详细信息,您可以将侦听器附加到用户 ID。侦听器将自动调用 onChildAdded()
或 onChildChanged()
方法。对于您的情况,由于您只是第一次需要信息,因此您可以使用方法 dataSnapshot.getChildren()
使用函数中返回的快照检索所有值,并使用函数 [=14= 获取确切值]
如需完整参考,请查看 Link。
您的代码可能如下所示
private DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child('users').child('user_id1').setChildListener(ListenerName);