मैं अपने ListView के लिए एक कस्टम एडेप्टर बनाने का प्रयास कर रहा हूं क्योंकि सूची में प्रत्येक आइटम का एक अलग दृश्य (लिंक, टॉगल या रेडियो समूह) हो सकता है, लेकिन जब मैं लिस्ट व्यू का उपयोग करने वाली गतिविधि को चलाने के लिए प्रयास करता हूं तो मुझे एक त्रुटि मिलती है। ऐप बंद हो जाता है। एप्लिकेशन को Android 1.6 प्लेटफ़ॉर्म के लिए लक्षित किया गया है।
कोड:
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();
}
}
मुझे प्राप्त होने वाली त्रुटि:
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)
मुझे पता है कि आवेदन वापस आ रहा है getView
और सब कुछ क्रम में लगता है।
क्या इस कारण हो सकता है पर किसी भी विचार की सराहना की जाएगी।
धन्यवाद,
-Dan