0

J'ai une liste d'objets personnalisés et je veux remplir ExpandableListView avec les données de ces objets. Mais à l'adaptateur personnalisé, il a bloqué à getGroupCount fonction et il s'arrête sans erreur et ne pas passer une autre fonction comme getChildrenCount. Premier getGroupCount fonctionne et après getGroupCount mais rien d'autre. Expandablelistview ne s'affiche pas à l'écran. Aucune erreur n'est montrée et aucun explistview n'est montré, je ne peux pas trouver le problème, je vois que ma liste a des données. Adapter est comme ci-dessous,Renseigne la liste d'affichage extensible avec des objets de liste personnalisés dans Android

public class salItemsAdapter extends BaseExpandableListAdapter { 

public List<ABSSALEITEM> extSetItems; 
public Context context; 
public LayoutInflater inflater; 
public HashMap<Integer, List<ABSSALEITEM>> extSubSetItems; 

public TextView txtSalItemHeaderClm1; 
public TextView txtSalItemHeaderClm2; 
public TextView txtSalItemHeaderClm3; 
public TextView txtSalItemBottomText; 


public salItemsAdapter(Context context, List<ABSSALEITEM> extSetItems, HashMap<Integer, List<ABSSALEITEM>> extSubSetItems) { 
    this.context = context; 
    this.extSetItems = extSetItems; 
    this.extSubSetItems = extSubSetItems; 
} 
@Override 
public int getChildrenCount(int groupPosition) { 
    return extSubSetItems.get(extSetItems.get(groupPosition)).size(); 
} 

@Override 
public int getGroupCount() { 
    return extSetItems.size(); 
} 

@Override 
public Object getGroup(int groupPosition) { 
    return extSetItems.get(groupPosition); 
} 

@Override 
public Object getChild(int groupPosition, int childPosition) { 
    return extSubSetItems.get(extSetItems.get(groupPosition)).get(childPosition); 
} 

@Override 
public long getGroupId(int groupPosition) { 
    return groupPosition; 
} 

@Override 
public long getChildId(int groupPosition, int childPosition) { 
    return childPosition; 
} 

@Override 
public boolean hasStableIds() { 
    return false; 
} 

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, 
         View view, ViewGroup parent) { 
    ABSSALEITEM setSalItem = (ABSSALEITEM)getGroup(groupPosition); 

    if(view == null) 
    { 
     inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.salitems_elv_head, parent, false); 
    } 

    txtSalItemHeaderClm1 = (TextView)view.findViewById(R.id.txtSalItemHeaderClm1); 
    txtSalItemHeaderClm2 = (TextView)view.findViewById(R.id.txtSalItemHeaderClm2); 
    txtSalItemHeaderClm3 = (TextView)view.findViewById(R.id.txtSalItemHeaderClm3); 

    txtSalItemHeaderClm1.setText(setSalItem.MAT); 
    txtSalItemHeaderClm2.setText(setSalItem.EXPLAIN); 
    txtSalItemHeaderClm3.setText(Double.toString(setSalItem.QUANT)); 

    return view; 
} 

@Override 
public View getChildView(int groupPosition, int childPosition, 
         boolean isLastChild, View view, ViewGroup parent) { 
    ABSSALEITEM setSalItem = (ABSSALEITEM)getChild(groupPosition, childPosition); 
    if(view==null) 
    { 
     inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.salitems_elv_item, parent, false); 
    } 

    txtSalItemBottomText = (TextView)view.findViewById(R.id.txtSalItemBottomText); 
    txtSalItemBottomText.setText(setSalItem.LONGEXP); 
    return view; 
} 

@Override 
public boolean isChildSelectable(int groupPosition, int childPosition) { 
    return false; 
} 
} 

Et je remplis mes objets de données comme

private void FillExpListView(List<ABSSALEITEM> paSalSetItems, List<ABSSALEITEM> paSalSetSubItems) { 

    hbSubSetItems = new HashMap<Integer, List<ABSSALEITEM>>(); 

    List<ABSSALEITEM> tmp = new ArrayList<ABSSALEITEM>(paSalSetSubItems); 
    List<ABSSALEITEM> tmp2 = new ArrayList<ABSSALEITEM>(); 
    Integer tmpItemnum = 0; 

    for (ABSSALEITEM tmpSalItem : tmp) { 

     tmpItemnum = tmpSalItem.ITEMNUM; 

     if(!hbSubSetItems.containsKey(tmpItemnum)) 
     { 
      tmp2.clear(); 
      for (ABSSALEITEM tmpSalItem2 : paSalSetSubItems) { 
       if (tmpItemnum == tmpSalItem2.ITEMNUM) { 
        tmp2.add(tmpSalItem2); 
       } 
      } 
      hbSubSetItems.put(tmpSalItem.ITEMNUM, tmp2); 
     } 
    } 

    adapterSalItems = new salItemsAdapter(salitems.this, paSalSetItems, hbSubSetItems); 
    elvSalItems.setAdapter(adapterSalItems); 
} 

Merci pour l'aide

Répondre

0

Vous pouvez utiliser les bibliothèques qui sont disponibles sur GitHub. Créez deux mises en page: - une pour l'en-tête (élément sur lequel l'utilisateur clique et se développe) et l'autre pour les éléments qui sont visibles en cliquant sur l'en-tête.

Certaines bibliothèques sont

enter image description here

enter image description here

enter image description here

+0

Merci Vishwesh Jainkuniya, mais dois-je comprendre qu'il n'y a aucun moyen d'utiliser un adaptateur personnalisé pour la liste pour standart listview extensible? – Safak