首页 > 解决方案 > Firebase 数据库使用 FirebaseUI 将子数据填充到 ListView

问题描述

我想使用 FirebaseUI 将 Firebase 实时数据库中的子数据填充到 ListView 中。

我的数据库结构是这样的。

- Personnel
    - 00
       - Name: "Wallace"
       - DOB: "11/21/87"
    - 01
       - Name: "Carl"
       - DOB: "05/14/90"
    - 02
       - Name: "Johnson"
       - DOB: "01/17/89"

我目前使用它来将数据填充到 ListView

mListView = (ListView) rootView.findViewById(R.id.listview1);
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://my-project-here.firebaseio.com/personnel");
FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(getActivity(),String.class,android.R.layout.simple_list_item_1,databaseReference) {
    @Override
    protected void populateView(View v, String model, int position) {
        TextView textView = (TextView) v.findViewById(android.R.id.text1);
        textView.setText(model);
    }
};
mListView.setAdapter(firebaseListAdapter);

列表显示为:(是的,这很好,但不是我的格式)

 00
----
 01
----
 02

我希望他们像这样显示每个数据的第一个(或特定的)子项:

 Wallace
---------
 Carl
---------
 Johnson

有什么方法可以实现吗?谢谢!

笔记

再次感谢!

标签: androidfirebaselistviewfirebase-realtime-databasefirebaseui

解决方案


创建一个小型 Java 类来代表您的用户:

public class Personnel {
  public String Name;
  public String DOB;
}

然后将其连接到代码中的适配器:

FirebaseListAdapter<Personnel> firebaseListAdapter = new FirebaseListAdapter<Personnel>(getActivity(),Personnel.class,android.R.layout.simple_list_item_1,databaseReference) {
    @Override
    protected void populateView(View v, Personnel model, int position) {
        TextView textView = (TextView) v.findViewById(android.R.id.text1);
        textView.setText(model.Name);
    }
};
mListView.setAdapter(firebaseListAdapter);

推荐阅读