J'ai un problème. Ma vue de liste extensible produit une erreur lorsque je clique sur le groupe (je veux ouvrir le groupe et montrer les enfants). Voici le résultat du chat.android - Extensible Affichage de la liste Erreur: getChild Cause Index Array sur Bound
09-24 01:44:47.987: E/AndroidRuntime(15754): FATAL EXCEPTION: main
09-24 01:44:47.987: E/AndroidRuntime(15754): Process: jkos.development.sioba, PID: 15754
09-24 01:44:47.987: E/AndroidRuntime(15754): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
09-24 01:44:47.987: E/AndroidRuntime(15754): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
09-24 01:44:47.987: E/AndroidRuntime(15754): at java.util.ArrayList.get(ArrayList.java:308)
09-24 01:44:47.987: E/AndroidRuntime(15754): at jkos.development.sioba.adapter.TumbuhanObatDetailAdapter.getChild(TumbuhanObatDetailAdapter.java:49)
09-24 01:44:47.987: E/AndroidRuntime(15754): at jkos.development.sioba.adapter.TumbuhanObatDetailAdapter.getChildView(TumbuhanObatDetailAdapter.java:95)
09-24 01:44:47.987: E/AndroidRuntime(15754): at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:451)
09-24 01:44:47.987: E/AndroidRuntime(15754): at android.widget.AbsListView.obtainView(AbsListView.java:2257)
09-24 01:44:47.987: E/AndroidRuntime(15754): at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
09-24 01:44:47.987: E/AndroidRuntime(15754): at android.widget.ListView.onMeasure(ListView.java:1175)
09-24 01:44:47.987: E/AndroidRuntime(15754): at android.view.View.measure(View.java:16525)
ici est ma classe adaptateur
public class TumbuhanObatDetailAdapter extends BaseExpandableListAdapter {
private Context _context;
private ArrayList<String> listHeader;
private HashMap<String, List<String>> listItem;
public TumbuhanObatDetailAdapter(Context context, ArrayList<String> listHeader, HashMap<String, List<String>> listItem){
this._context = context;
this.listHeader = listHeader;
this.listItem = listItem;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return this.listHeader.size();
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return this.listItem.size();
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return this.listHeader.get(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
//return this._listItem.get(this._listHeader.get(groupPosition)).get(childPosition);
return this.listItem.get(listHeader.get(groupPosition)).get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.tumbuhanobatdetailgroupitem, null);
}
TextView lblListHeader = (TextView) convertView.findViewById(R.id.expandableListViewHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
//return null;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//System.out.println("group : "+groupPosition+" child : "+childPosition);
String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.tumbuhanobatdetailchilditem, null);
}
TextView txtListChild = (TextView) convertView.findViewById(R.id.childItem);
txtListChild.setText(childText);
return convertView;
//return null;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
}
est ici une section où l'adaptateur est appelé dans mon activité java
ArrayList<String>listHeader = new ArrayList<String>();
HashMap<String, List<String>>listItem = new HashMap<String, List<String>>();
listHeader.add("Umum");
listHeader.add("Simplisia");
listHeader.add("Kegunaan Empiris");
List<String> umum = new ArrayList<String>();
umum.add(namaIndonesia);
umum.add(namaLatin);
List<String> simplisia = new ArrayList<String>();
for(int i = 0; i < namaSimplisia.size(); i++){
simplisia.add(namaSimplisia.get(i));
}
List<String> penggunaanEmpiris = new ArrayList<String>();
for(int i = 0; i < kegunaanEmpiris.size(); i++){
penggunaanEmpiris.add(kegunaanEmpiris.get(i));
}
listItem.put(listHeader.get(0), umum);
listItem.put(listHeader.get(1), simplisia);
listItem.put(listHeader.get(2), penggunaanEmpiris);
tumbuhanObatDetailAdapter = new TumbuhanObatDetailAdapter(context, listHeader, listItem);
expandableListView.setAdapter(tumbuhanObatDetailAdapter);
S'il vous plaît je besoin d'une réponse dès possible
Quel débogage avez-vous fait avant de poster ici? Définir des points d'arrêt? – CubeJockey
J'essaie juste de savoir quelle est la valeur groupposition et childposition qui provoque un index hors limite. Une idée? –