带有 ArrayList<HashMap<String,String>> 的可扩展列表视图

Expandable Listview with ArrayList<HashMap<String,String>>

我想用CarList作为childList,这样HashMap就是列表的一行,group字符串就是表头。我怎样才能将它们组合在一起。而且我还需要一个适配器来使用这些。

下面的代码是我目前的代码。

    ArrayList<HashMap<String, String>> CarList;

            static final String TAG_URLS = "urls";
            static final String TAG_ID = "id";
            static final String TAG_NAME = "name";
            static final String TAG_PIC = "pic";
            String group;

    CarList = new ArrayList<HashMap<String, String>>();

List<Cars> cars = db.getAllCars();       
String group = "Cars";
        for (Cars cn : cars) {

    HashMap<String, String> map = new HashMap<String, String>();

                                String id = String.valueOf(cn.getID());
                                String name = cn.getName();
                                String urls = cn.getUrls();
                                String pic = cn.getPic();

                                map.put(TAG_ID, id);
                                map.put(TAG_NAME, name);
                                map.put(TAG_URLS, urls);
                                map.put(TAG_PIC, pic);

                                CarList.add(map);
}

如果您想使用不同的值类型,您可以使用下一个模式:

创建一个值 object,它将包含所有视图类型的所有信息,我们称之为 MyDataItem。比创建 'MyDataItem' 的 arrayList。确保 'MyDataItem' 属性 中的一个是类型,这样可以区分 header 和内部项,不管你的结构是什么。

您可以使用 BaseAdapter 的下一个方法来处理:

        @Override
        public int getViewTypeCount() {
            return super.getViewTypeCount();
        }

        @Override
        public int getItemViewType(int position) {
            return super.getItemViewType(position);
        }

这将允许您在一个列表中管理多种类型的视图。您可以在 this 手册中找到更多信息。