2015-03-12 7 views
7

में मुझे यह इंडेक्सऑटऑफबाउंड अपवाद प्राप्त हो रहा है, लेकिन यह पता लगाना प्रतीत नहीं होता कि इसका क्या कारण है। मेरी सूचीदृश्य में वस्तुओं की एक सूची वाला एक एडाप्टर है, और ऑब्जेक्ट्स को टाइमस्टैम्प के आधार पर हटा दिया जाता है। GetView विधि के अंदर निष्कासन किया जाता है। एक बार आइटम हटा दिए जाने के बाद, मैं अधिसूचना कॉल करता हूंडेटाट चेंज()।इंडेक्सऑटऑफबाउंड्स अपवाद मेरे एंड्रॉइड लिस्टव्यू एडाप्टर

पूर्ण स्रोत कोड GitHub पर उपलब्ध है, और यहाँ सूचीदृश्य एडाप्टर कोड का कोई लिंक है:

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
at java.util.ArrayList.get(ArrayList.java:308) 
at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164) 
at android.widget.ListView.dispatchDraw(ListView.java:3307) 
at android.view.View.draw(View.java:15213) 
<snip> 

मुझे लगता है कि अक्सर देखते हैं: https://github.com/kenneho/run-for-the-bus/blob/master/app/src/main/java/net/kenneho/runnow/adapters/TravelsAdapter.java

यह स्टैकट्रेस मैं बार आ रही है की शुरुआत है getView के भीतर स्थिति-मूल्य छह या सात के रूप में उच्च हो सकता है।

क्या कोई यहां बग खोज सकता है? किसी भी तरह की सहायता को आभार समझेंगे।

सादर, केनेथ

संपादित करें 1: * गतिविधि कोड के लिए लिंक का उपयोग करता है: https://github.com/kenneho/run-for-the-bus/blob/master/app/src/main/java/net/kenneho/runnow/InfoActivity.java * मैं यहाँ सबसे अधिक प्रासंगिक logcat हिस्सा चिपकाया है: http://pastebin.com/5FtU4EaM

+0

आप खाली होने पर ArrayList तक पहुंचने का प्रयास कर रहे हैं। कुछ कोड पोस्ट करें। – VERT9x

+0

क्या आप अपना गतिविधि कोड पोस्ट कर सकते हैं? आकार 0 है इसका मतलब है कि आपकी सूची खाली है। –

+0

* निष्कासन getView विधि के अंदर किया जाता है। * और यहां समस्या भी एडाप्टर से विधि को हटा रही है, पहले ही सूचित कर रही हैडेटाडेटा ... – Selvin

उत्तर

1

अंत में बग ठीक हो गई है । सबसे पहले, मैंने @ सेल्विन द्वारा सुझाए गए कोड को दोहराया। दूसरा, मैं नए लोगों को बनाने से पहले किसी भी Runnables को रोकने के लिए एक "removecallback" -statement कहा:

// Make sure we stop existing timers, if any. 
timerHandler.removeCallbacks(timerRunnable); 

timerRunnable = new Runnable() { 

    @Override 
    public void run() { 
     removeExpiredTravels(myAdapter); 
     myAdapter.notifyDataSetChanged(); 
     timerHandler.postDelayed(this, 1000); 
    } 
}; 

timerHandler.postDelayed(timerRunnable, 0); 

मुझे इस बग पर नज़र रखने की मदद करने के लिए धन्यवाद।

+0

क्या आपने यह देखा है व्यू() ?? –

संबंधित मुद्दे