Android ListView二级列表demo
时间: 2023-08-03 15:03:37 浏览: 161
好的,以下是一个简单的 Android ListView 二级列表的示例代码:
首先,在布局文件中,我们需要使用两个 ListView 组件,一个用于显示一级列表,一个用于显示二级列表。示例代码如下:
```
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<!-- 一级列表 -->
<ListView
android:id="@+id/list_view_1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<!-- 二级列表 -->
<ListView
android:id="@+id/list_view_2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
</LinearLayout>
```
接下来,在 Java 代码中,我们需要定义一个数据源,用于存储一级列表和二级列表的数据。在本示例中,我们使用一个 HashMap 来存储数据。示例代码如下:
```
// 定义数据源
private Map<String, List<String>> mData = new HashMap<>();
// 初始化数据
private void initData() {
List<String> data1 = new ArrayList<>();
data1.add("二级列表1-1");
data1.add("二级列表1-2");
data1.add("二级列表1-3");
mData.put("一级列表1", data1);
List<String> data2 = new ArrayList<>();
data2.add("二级列表2-1");
data2.add("二级列表2-2");
mData.put("一级列表2", data2);
// 添加更多数据...
}
```
然后,我们需要为一级列表设置适配器,并在适配器中为每个列表项设置点击事件。当用户点击一级列表中的某一项时,我们需要根据该项的位置,从数据源中获取对应的二级列表数据,并更新二级列表的适配器。示例代码如下:
```
// 一级列表的适配器
private ArrayAdapter<String> mAdapter1;
// 为一级列表设置适配器
private void setAdapter1() {
mAdapter1 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, new ArrayList<>(mData.keySet()));
ListView listView1 = findViewById(R.id.list_view_1);
listView1.setAdapter(mAdapter1);
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 获取选中的一级列表项对应的数据
String key = mAdapter1.getItem(position);
List<String> data = mData.get(key);
// 更新二级列表的适配器
mAdapter2.clear();
mAdapter2.addAll(data);
mAdapter2.notifyDataSetChanged();
}
});
}
```
最后,我们还需要为二级列表设置适配器。示例代码如下:
```
// 二级列表的适配器
private ArrayAdapter<String> mAdapter2;
// 为二级列表设置适配器
private void setAdapter2() {
mAdapter2 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, new ArrayList<String>());
ListView listView2 = findViewById(R.id.list_view_2);
listView2.setAdapter(mAdapter2);
}
```
这样,我们就完成了 Android ListView 二级列表的示例代码。
阅读全文