如何在没有重复 object 数据列表头的情况下添加可扩展 ListView 的 child 项目
How to add expandable ListView's child item without duplicate object data listheader
我在 Android 中遇到问题。我有一个清单。例如名称是列表;
ListModel 有一个 id,name ..
而我的数据是,
list.get(0).getName(); // name = A
list.get(0).getId(); // id = 1
list.get(1).getName(); // name = B
list.get(1).getId(); // id = 2
list.get(2).getName(); // name = C
list.get(2).getId(); // id = 3
list.get(3).getName(); // name = A
list.get(3).getId(); // id = 4
list.get(4).getName(); // name = B
list.get(4).getId(); // id = 5
所以我想在 Android 的 expandableListView 中使用这些数据。但没有重名。这意味着我只想显示 A、B、C,当我单击 A 时,我想在孩子中看到所有 A 的 ID。例如是 ;
A -->1,4
B -->2,5
C -->3
我该怎么做?非常感谢。
试试这个代码,
// This is your data
ArrayList<ListModel> list = new ArrayList<>();
list.add(new ListModel("A", "1"));
list.add(new ListModel("B", "2"));
list.add(new ListModel("C", "3"));
list.add(new ListModel("A", "4"));
list.add(new ListModel("B", "5"));
// Create a list of keys (A, B, C)
Set<String> keys = new HashSet<>();
for (ListModel item : list) {
keys.add(item.getName());
}
// The final dataset
Map<String, List<String>> dataset = new HashMap<>();
for (String key : keys) {
List<String> subItems = new ArrayList<>();
for (ListModel item : list) {
if(item.getName().equals(key)){
subItems.add(item.getId());
}
}
dataset.put(key, subItems);
}
Log.e(TAG, dataset.toString());
如果谁有更好的解决方案请分享。
我在 Android 中遇到问题。我有一个清单。例如名称是列表; ListModel 有一个 id,name ..
而我的数据是,
list.get(0).getName(); // name = A
list.get(0).getId(); // id = 1
list.get(1).getName(); // name = B
list.get(1).getId(); // id = 2
list.get(2).getName(); // name = C
list.get(2).getId(); // id = 3
list.get(3).getName(); // name = A
list.get(3).getId(); // id = 4
list.get(4).getName(); // name = B
list.get(4).getId(); // id = 5
所以我想在 Android 的 expandableListView 中使用这些数据。但没有重名。这意味着我只想显示 A、B、C,当我单击 A 时,我想在孩子中看到所有 A 的 ID。例如是 ;
A -->1,4
B -->2,5
C -->3
我该怎么做?非常感谢。
试试这个代码,
// This is your data
ArrayList<ListModel> list = new ArrayList<>();
list.add(new ListModel("A", "1"));
list.add(new ListModel("B", "2"));
list.add(new ListModel("C", "3"));
list.add(new ListModel("A", "4"));
list.add(new ListModel("B", "5"));
// Create a list of keys (A, B, C)
Set<String> keys = new HashSet<>();
for (ListModel item : list) {
keys.add(item.getName());
}
// The final dataset
Map<String, List<String>> dataset = new HashMap<>();
for (String key : keys) {
List<String> subItems = new ArrayList<>();
for (ListModel item : list) {
if(item.getName().equals(key)){
subItems.add(item.getId());
}
}
dataset.put(key, subItems);
}
Log.e(TAG, dataset.toString());
如果谁有更好的解决方案请分享。