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);