不使用ExpandableListAdapter 一个listview设置二级列表 父列表一个对应多个子列表 使用list数据 demo
时间: 2024-03-11 14:50:20 浏览: 54
带二级和三级目录的列表ExpandableListView
好的,这里提供一个简单的示例代码,使用一个 `List` 存储父列表项和子列表项的数据:
```java
// 父列表项和子列表项的数据
List<Object> dataList = new ArrayList<>();
dataList.add("父列表1");
dataList.add("子列表1-1");
dataList.add("子列表1-2");
dataList.add("子列表1-3");
dataList.add("父列表2");
dataList.add("子列表2-1");
dataList.add("子列表2-2");
dataList.add("父列表3");
dataList.add("子列表3-1");
dataList.add("子列表3-2");
dataList.add("子列表3-3");
// 构造适配器
ListAdapter adapter = new ListAdapter(dataList);
listView.setAdapter(adapter);
```
其中,`ListAdapter` 是自定义的一个适配器类,继承自 `BaseAdapter`,可以根据自己的需求进行定制。在适配器中,需要实现以下几个方法:
```java
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
if (dataList.get(position) instanceof String) {
// 父列表项
return 0;
} else {
// 子列表项
return 1;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
if (type == 0) {
// 构造父列表项视图
return parentView;
} else {
// 构造子列表项视图
return childView;
}
}
```
其中,`getCount()` 返回列表项的个数,`getItem(int position)` 返回指定位置的数据,`getItemId(int position)` 返回指定位置的 ID,`getItemViewType(int position)` 返回指定位置的视图类型,这里通过判断数据类型来确定是父列表项还是子列表项,`getViewTypeCount()` 返回视图类型的个数,这里有两种视图类型,分别是父列表项和子列表项,`getView(int position, View convertView, ViewGroup parent)` 构造列表项的视图。
阅读全文