ArrayIndexOutOfBoundsException avec le custom Android Adaptateur pour plusieurs points de vue dans la ListView

Je tente de créer un Adaptateur pour mon ListView, puisque chaque élément de la liste peut avoir un avis différent (un lien, de bascule, de radio ou de groupe), mais lorsque j'essaie d'exécuter l'Activité qui utilise la ListView j'ai un message d'erreur et l'application s'arrête. La demande est ciblée pour la plate-forme Android 1.6.

Le code:

public class MenuListAdapter extends BaseAdapter {
private static final String LOG_KEY = MenuListAdapter.class.getSimpleName();
protected List<MenuItem> list;
protected Context ctx;
protected LayoutInflater inflater;
public MenuListAdapter(Context context, List<MenuItem> objects) {
this.list = objects;
this.ctx = context;
this.inflater = (LayoutInflater)this.ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Log.i(LOG_KEY, "Position: " + position + "; convertView = " + convertView + "; parent=" + parent);
MenuItem item = list.get(position);
Log.i(LOG_KEY, "Item=" + item );
if (convertView == null)  {
convertView = this.inflater.inflate(item.getLayout(), null);
}
return convertView;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return true;
}
@Override
public int getCount() {
return this.list.size();
}
@Override
public MenuItem getItem(int position) {
return this.list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
Log.i(LOG_KEY, "getItemViewType: " + this.list.get(position).getLayout());
return this.list.get(position).getLayout();
}
@Override
public int getViewTypeCount() {
Log.i(LOG_KEY, "getViewTypeCount: " + this.list.size());
return this.list.size();
}
}

L'erreur que je reçoit:

    java.lang.ArrayIndexOutOfBoundsException
at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:3523)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1158)
at android.widget.ListView.onMeasure(ListView.java:1060)
at android.view.View.measure(View.java:7703)

Je sais que la demande est de retour de getView et tout semble en ordre.

Toutes les idées sur ce qui pourrait être à l'origine de ce serait appréciée.

Merci,

-Dan

  • Salut Dan, êtes-vous sûr getCount le total de elementsto être affiché sur votre ListView??? public int getCount() { return this.liste.size(); }
  • Ils ne pouvaient pas venir avec un moins descriptif message d'erreur...
InformationsquelleAutor Dan | 2010-04-07