2012-06-23 3 views
1

Привет, я пытаюсь создать настраиваемый расширяемый список, но документация на адаптере очень запутанна и разнообразна. Как обычно, у меня есть hashmap для чтения массива json, а затем я помещаю его в список. Группа каждого ребенка отправляется внутри одного массива в ключе «GRUPO», на последней позиции. Может кто-нибудь, пожалуйста, дайте мне адаптацию к этому? Код из JSON следующим ниже:expandable listview android json

   if (tipopergunta.contentEquals("BOOLEANO") || tipopergunta.contentEquals("ESCMULTIPLA") || tipopergunta.contentEquals("ESCUNICA")){ 
        HashMap<String,String> childdados = new HashMap<String,String>(); 
        childdados.put("GRUPO", "Dados"); 
        childdados.put("TIPOPERGUNTA", tipopergunta); 
        childdados.put("PERGUNTA", pergunta); 
        childdados.put("BREVEDESIGNACAO", brevedesc); 
        childdados.put("ESTADO",estado); 
        childdados.put("INSTRUCOES",instrucoes); 
        childdados.put("IDPERGUNTA",idpergunta); 
        Log.d("childdados",""+childdados.toString()); 
        list.add(childdados); 
       } 


      if (tipopergunta.contentEquals("OPINIAO")){ 
         HashMap<String,String> childdados = new HashMap<String,String>(); 
         childdados.put("GRUPO", "Opinião"); 
         childdados.put("TIPOPERGUNTA", tipopergunta); 
         childdados.put("PERGUNTA", pergunta); 
         childdados.put("BREVEDESIGNACAO", brevedesc); 
         childdados.put("ESTADO",estado); 
         childdados.put("INSTRUCOES",instrucoes); 
         childdados.put("IDPERGUNTA",idpergunta); 

         Log.d("opiniaolist",childdados.toString()); 
         list.add(childdados); 
      } 

      if (tipopergunta.contentEquals("FOTOGRAFIA")){ 
         HashMap<String,String> childdados = new HashMap<String,String>(); 
         childdados.put("GRUPO", "Fotografia"); 
         childdados.put("TIPOPERGUNTA", tipopergunta); 
         childdados.put("PERGUNTA", pergunta); 
         childdados.put("BREVEDESIGNACAO", brevedesc); 
         childdados.put("ESTADO",estado); 
         childdados.put("INSTRUCOES",instrucoes); 
         childdados.put("IDPERGUNTA",idpergunta); 

         Log.d("fotolist",childdados.toString()); 
         list.add(childdados); 
        } 

ответ

1

This это помогло мне понять, расширяемой адаптер представления списка.

В расширенном виде списка у вас всегда есть родители и дети. Когда вы нажимаете на родителя, вы видите его детей.

Таким образом, адаптер нуждается в 3 вещах, в основном. Список родителей. Список детей (которые могут быть, например, массивом массивов) как рисовать детей и как рисовать родителей.

у вас должен быть массив родителей: String[] parents = {"parent1, "parent2"); и массив массивов childern, каждый из которых является дочерним элементом одного родителя.

String [][] children = {{child_A_Parent1, child_B_Parent1}, {child_A_Parent2, child_B_parent2}}; 

на методе getGroup вы должны вернуть родитель вы хотите для данной строки:

public Object getGroup(int groupPosition) { 
     return parents[groupPosition]; 
    } 

на методе GetChild вы должны вернуть ребенок вы хотите:

public Object getChild(int groupPosition, int childPosition) { 

     return children[groupPosition][childPosition]; 
    } 

на методы getChildView() вы должны раздуть нужный макет (например, xml с текстовым просмотром) и установить текст с соответствующим дочерним элементом. Обратите внимание, что здесь вам не нужно беспокоиться о том, какой ребенок это уже пройдена на аргументы:

public View getChildView(int groupPosition, int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 
    //inflate a the layout and get the text view 
    tv.setText(children[grouposition][childPosition]; 
..} 

то же самое можно сказать о родительском методе:

public View getGroupView(int groupPosition, boolean isExpanded, 
       View convertView, ViewGroup parent) { 
     //inflate a the layout and get the text view 

     tvParent.setText(parents[groupPosition]; 

} 

вы можете установить все виды макетов для родителя и детей. Просто используйте надуватель для раздувания xml из папок макета. а затем используйте идентификатор ресурса, чтобы заполнить представления вашими виджетами.

надеюсь, что это поможет вам адаптировать ваши данные к этому фрагменту.

+0

все еще я не могу понять. ican поставил здесь то, что я получаю на адаптере изображения, я понятия не имею, как реализовать его на адаптере. – user1437481

+1

Я попытался объяснить каждый метод. Смотрите, помогает ли это вам. –

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