2013-11-30 4 views
0

Я пытаюсь реализовать расширяемое listview с данными, поступающими из базы данных. Я уже пытался иметь данные, добавленные в кодах, и он работает, поэтому я пытаюсь заставить динамические данные из базы данных заполнить список.HashMap Итерация показывает только последний элемент

Данные сгруппированы по два, основная категория и член. Например, если основная категория - это фрукты, ее участники могут включать манго, авокадо, яблоки и т. Д. Если животные, у него могут быть лошади, орел, акула. Данные всегда попадают в пары, такие как Animal, Horses; Животное, Орел; Фрукты, яблоки. Расширяющийся ListView должен выглядеть следующим образом:

животных

- Лошади

- Орел

Плодовые

- Яблоки

Мой код ниже уже можно определить основной поэтому заголовки уже отображают основные группы Fruit and Animal. Использование

group_member.put(family_name, member_name); 

Я связал участника с основной категорией. Теперь моя проблема заключается в том, как кодировать итерацию для группировки членов в основную категорию. До сих пор я уже пытался использовать итератор на основе примеров кода, приведенных здесь в stackoverflow и других сайтах, однако отображаются только последние элементы каждой группы. Я также пробовал использовать for-each loop bur все еще без успеха.

String json = jsonParser.makeHttpRequest(URL_COMPONENTS, "POST", params); 
JSONArray components = null; 
ArrayList<HashMap<String, String>> componentList; 
List<String> main_group = new ArrayList<String>(); 
HashMap<String, String> group_member = new HashMap<String, String>(); 

try { 
    components = new JSONArray(json); 

    if (components != null) { 
    for (int i = 0; i < components.length(); i++) { 
     JSONObject c = components.getJSONObject(i); 

     String family_name = c.getString(TAG_FAMILY_NAME); 
     String member_name = c.getString(TAG_MEMBER_NAME); 

     main_group.add(family_name); 
     group_member.put(family_name, member_name); 

     if (!listDataHeader.contains(main_group)) 
     listDataHeader.add(main_group); 

     componentList.add(group_member); 
    } 
    } 
} 

Просьба помочь. Заранее спасибо!

ответ

0

Если вы используете HashMap, вы не можете иметь ключ более одного раза в своем списке. Каждый ключ должен быть уникальным. Это может быть решением:

HashMap<String, ArrayList<String>> group_member = new HashMap<String, ArrayList<String>>(); 

... используя HashMap как каталог и ключ возвращается в Список_массивах членов семьи.

+0

, используя ваше решение, как добавить данные в group_member? – user3052644

+0

и как его получить. Благодаря! – user3052644

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