ListView her öğe farklı bir görünüm (bir bağlantı, geçiş veya radyo grubu) olabilir, çünkü ListView için özel bir bağdaştırıcı oluşturmak çalışıyorum, ancak ListView kullanan etkinliği çalıştırmaya çalıştığınızda bir hata alıyorum ve uygulama durur. Uygulama Android 1.6 platformu için hedeflenmiştir.
Kod:
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();
}
}
Aldığım hata:
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)
Uygulamanın geri döndüğünü biliyorum getView
ve her şey yolunda görünüyor.
Buna neyin sebep olabileceğine dair herhangi bir fikir takdir edilecektir.
Teşekkürler,
-Dan