दिलचस्प पोस्ट
गीट स्थिति में फाइल्स को दिखाया गया है, भले ही सामग्रियां समान हैं I -सभी_लोड लिंकर झंडा क्या करता है? किसी भीड़-भाड़ वाले सॉर्ट के साथ लाखों चित्र कैसे रैंक करें पायथन अनुप्रयोग के लिए सबसे अच्छा परियोजना संरचना क्या है? जांच कर रहा है कि क्या मेरा विंडोज़ अनुप्रयोग चल रहा है जावा में पुरातन के लिए संदर्भ से पास के बराबर कैसे करें डाटा कंट्रेक्ट और डेटामेम्बर विशेषताओं का उपयोग कब करना है? कैसे एक डिस्क आकार मुखौटा एक numpy सरणी में लागू करने के लिए? प्रोटोटाइप का उपयोग करने के लिए जावास्क्रिप्ट पुश अधिसूचना ग़लत ढंग से काम करता है जब एप पृष्ठभूमि पर है या नहीं चल रहा है सी में फ़ंक्शन में एरे और एरे पॉइंटर को गुज़रने में अंतर एंड्रॉइड पर स्क्रीन बंद करें विंडोज पर गिट के साथ काम करने के लिए मैं एक संपादक कैसे स्थापित कर सकता हूँ? मुख्य धागा निकास, क्या अन्य बाहर निकलता है? एफएफपीजी की कुंजी-फ़्रेम पीढ़ी को कैसे नियंत्रित किया जाए?

ArrayIndexOutOfBounds ListView में कई दृश्यों के लिए कस्टम एंड्रॉइड एडाप्टर के साथ अपवाद

मैं सूची सूची में प्रत्येक आइटम के एक अलग दृश्य (एक लिंक, टॉगल, या रेडियो समूह) कर सकते हैं, क्योंकि मेरी ListView के लिए एक कस्टम एडाप्टर बनाने का प्रयास कर रहा हूँ, लेकिन जब मैं सूचीविधि का उपयोग करने वाली गतिविधि को चलाने की कोशिश करता हूं, तो मुझे एक त्रुटि मिलती है और ऐप बंद हो जाता है एप्लिकेशन को एंड्रॉइड 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

Solutions Collecting From Web of "ArrayIndexOutOfBounds ListView में कई दृश्यों के लिए कस्टम एंड्रॉइड एडाप्टर के साथ अपवाद"

वह आइटम दृश्य प्रकार जिसे आप से लौट रहे हैं

getItemViewType() है >= getViewTypeCount()

स्वीकृत उत्तर सही है। इस समस्या से बचने के लिए मैं ऐसा कर रहा हूं:

 public enum FoodRowType { ONLY_ELEM, FIRST_ELEM, MID_ELEM, LAST_ELEM } @Override public int getViewTypeCount() { return FoodRowType.values().length; } @Override public int getItemViewType(int position) { return rows.get(position).getViewType(); //returns one of the above types } 

कारण, सबसे अधिक संभावना है क्योंकि getItemViewType विधि गलत मूल्यों को वापस कर रहा है! सूची दृश्य में प्रत्येक पंक्ति एक एक दृश्य है। जबकि scrooling getItemViewType दृश्य की गिनती से अधिक तक पहुँचने।

क्या करें? कैसे मुद्दे से बचने के लिए?

पहले अपनी सूची दृश्य में देखें (पंक्ति) पहले दिखाया गया है, जो कि पहले दिखाया गया था। जबकि स्क्रॉलिंग मॉड्यूलर समीकरण का उपयोग करते हैं

  @Override public int getItemViewType(int position) { return choseType(position);//function to use modular equation } @Override public int getViewTypeCount() { return 10; } 

इस उदाहरण में दस दृश्य (10 पंक्ति) हैं

 private int choseType(int position){ if(position%10==0) return 0; else if(position%10==1) return 1; else if(position%10==2) return 2; else if(position%10==3) return 3; else if(position%10==4) return 4; else if(position%10==5) return 5; else if(position%10==6) return 6; else if(position%10==7) return 7; else if(position%10==8) return 8; else return 9; } 

जरूरी

कुछ उपयोगकर्ताओं ने स्टैकेवर्फ फ़्लो पर उस विधि पर दूसरे प्रश्न का उल्लेख किया है

सार्वजनिक int getViewTypeCount () और सार्वजनिक int getItemViewType (इंट की स्थिति) फिक्स की तरह Tooglebutton स्वचालित रूप से राज्य की जांच scrooling पर सच को सक्षम करें .. यह बड़ा ग़लत है । अगर आप स्क्रोल पर स्वत: enbale नहीं करना चाहते

 toogleButton.setChecked(false); 

GetView ओवरराइड विधि पर