带有 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 手册中找到更多信息。
我想用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 手册中找到更多信息。