2016-09-23 1 views
1

У меня проблема в Android. У меня есть список. Например, имя - это список; ListModel имеет идентификатор, имя ..Как добавить расширяемый дочерний элемент ListView без данных dublicate listheader

И мои данные,

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 

Так что я хочу, чтобы использовать эти данные в expandableListView в Android. Но без двойного имени. Это означает, что я хочу показать только A, B, C, и когда я нажимаю на A, я хочу увидеть идентификатор A в детях. Например, это;

A -->1,4 
B -->2,5 
C -->3 

Как я могу это сделать? Большое спасибо.

ответ

0

Попробуйте этот код,

// 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()); 

Если у кого есть лучшее решение, пожалуйста поделитесь.

+1

Это работает. Большое спасибо.. –

 Смежные вопросы

  • Нет связанных вопросов^_^