怎样将一个Hashmap中的内容通过Listview呈现出来,要求是:将每个Key值分别列在不同的item上,点进相应的item,会显示出该item对应的所有value的值
时间: 2023-06-14 21:05:21 浏览: 118
ListView的Adapter使用(绑定数据) 之 自定义每一项的布局去绑定数据
你可以通过以下步骤来实现:
1. 将HashMap中的key值存储到一个ArrayList中,保持顺序不变。
2. 实现ListView的Adapter,在getView()方法中设置每个Item的显示效果,将ArrayList中的key值显示在对应的Item上。
3. 给ListView设置OnItemClickListener,在点击某个Item时,获取该Item所对应的key值,并通过key值从HashMap中获取对应的value值。
4. 将获取到的value值显示在一个新的Activity上,可以使用TextView或者ListView等控件来显示。
这里给出一个简单的实现示例:
```
// 初始化HashMap
HashMap<String, List<String>> hashMap = new HashMap<>();
hashMap.put("key1", Arrays.asList("value1", "value2", "value3"));
hashMap.put("key2", Arrays.asList("value4", "value5", "value6"));
hashMap.put("key3", Arrays.asList("value7", "value8", "value9"));
// 将HashMap中的Key值存储到ArrayList中
List<String> keyList = new ArrayList<>(hashMap.keySet());
// 初始化ListView
ListView listView = findViewById(R.id.listView);
// 设置Adapter
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, keyList);
listView.setAdapter(adapter);
// 设置OnItemClickListener
listView.setOnItemClickListener((parent, view, position, id) -> {
String key = keyList.get(position);
List<String> values = hashMap.get(key);
// 打开新的Activity并将values传递过去
Intent intent = new Intent(this, ValuesActivity.class);
intent.putStringArrayListExtra("values", new ArrayList<>(values));
startActivity(intent);
});
// ValuesActivity中的代码
List<String> values = getIntent().getStringArrayListExtra("values");
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, values);
listView.setAdapter(adapter);
```
在ValuesActivity中你可以使用ListView或者RecyclerView等控件来显示value值。
阅读全文