1

J'avais une liste extensible qui fonctionnait dans une activité précédente, mais j'ai décidé d'utiliser une route différente (Fragments), et je voulais copier l'idée de liste extensible. J'ai donc copié/modifié le code, mais cela ne semble pas fonctionner comme je l'avais espéré.ExpandableListView ne développant pas les nœuds enfants

Vérités:

  • Je sais que les données fait son chemin vers le ArrayList, comme je l'impression la taille() et celle-ci apparaît le montant approprié.

  • L'en-tête de liste apparaît, et je peux le tapoter, ce qui retourne la carotte (^) à l'envers. J'utilise 3 Fragments et montre une mise en page basée sur la sélection de Fragment. J'aimerais avoir une liste extensible par fragment, et je pense que c'est faisable. Class ExpandableListA a fonctionné pour moi dans le passé et je n'ai pas modifié le code, donc je suppose que ce n'est pas le problème.


Sélection d'un fragment

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    ViewGroup rootView; 
    TextView tv; 

    switch(getPageNumber()){ 
     default: 
     case 0: 
      rootView = (ViewGroup) inflater.inflate(R.layout.fragment_today, container, false); 
      tv = (TextView)rootView.findViewById(R.id.today_frag_tv); 
      tv.append(todays_data[0]); 
      expandable_list(todays_data, rootView); 
      break; 
     case 1: 
      rootView = (ViewGroup) inflater.inflate(R.layout.fragment_specials, container, false); 
      tv = (TextView)rootView.findViewById(R.id.specials_frag_tv); 
      // will figure this out 
      break; 
     case 2: 
      rootView = (ViewGroup) inflater.inflate(R.layout.fragment_business, container, false); 
      tv = (TextView)rootView.findViewById(R.id.biz_frag_tv); 
      // will figure this out     
      break; 
    } 

    return rootView; 
} 

Déterminer la liste extensible

public void expandable_list(final String biz_data[], ViewGroup rootView){ 

    // get the listview 
    expListView = (ExpandableListView) rootView.findViewById(R.id.lvExpToday); 

    // preparing list data 
    prepareListData(biz_data); 

    // 
    listAdapter = new ExpandableListA(getActivity(), listDataHeader, listDataChild); 

    // setting list adapter 
    expListView.setAdapter(listAdapter); 

} 

private void prepareListData(String biz_data[]) { 

    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 

    // Adding child data 
    listDataHeader.add(biz_data[0]); 

    Log.d("b_d length: ", Integer.toString(biz_data.length)); 

    // Adding child data 
    List<String> mon = new ArrayList<String>(); 

    for (int i = 1; i < biz_data.length;i++) 
     mon.add(biz_data[i]); 

    Log.d("mon length: ", Integer.toString(mon.size())); 

    listDataChild.put(listDataHeader.get(0), mon); // Header, Child data 

} 

Répondre

0

erreur était dans mon dossier de mise en page XML. Les Fragments étaient dans un ScrollView et après avoir enlevé cela dans la suite d'un LinearLayout, les ExpandableLists ont bien fonctionné.