Java 重新填充ArrayList后的IndexOutOfBoundsException(仅限棉花糖)
我的设置如下:在onCreate中,我按如下方式初始化ArrayList:Java 重新填充ArrayList后的IndexOutOfBoundsException(仅限棉花糖),java,android,arraylist,android-asynctask,android-6.0-marshmallow,Java,Android,Arraylist,Android Asynctask,Android 6.0 Marshmallow,我的设置如下:在onCreate中,我按如下方式初始化ArrayList: textList = new ArrayList<HashMap<String, String>>(); // unrelated code ... if (isConnected()) { new DisplayTextTask().execute(sectionId); } 但是,由于我不希望上一页的陈旧文本保留在屏幕上,因此我在异步任务中执行以下操作: private clas
textList = new ArrayList<HashMap<String, String>>();
// unrelated code ...
if (isConnected()) {
new DisplayTextTask().execute(sectionId);
}
但是,由于我不希望上一页的陈旧文本保留在屏幕上,因此我在异步任务中执行以下操作:
private class DisplayTextTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
textList.clear();
}
@Override
protected String doInBackground(String... urls) {
// json parsing is called in getData()
try {
return getData(urls[0]);
} catch (IOException e) {
return "Could not load text";
}
}
解决方法:在调用clear并在postExecute()中重新连接适配器之前,我必须先断开适配器与ListView的连接,我猜Marshmallow对数据绑定更严格show logcat StackTrace没有logcat,我一点也不知道。一种想法可能是,在6.0上,Clear()方法可能已经更改。我会尝试一个alist.removeAll(alist),看看clear是否是问题所在,如果是的话,我会向谷歌报告,因为安卓M仍在唯冠上,目前还没有稳定的发布版本。@ρцσѕρєK更新为logcat@irvanjit:请发布
HeaderViewListAdapter
classcode@CptEric ^. 尝试移除,同样的事情也会发生。为什么不使用RecyclerView?为什么要为M开发,但仍然使用ListView?
private class DisplayTextTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
textList.clear();
}
@Override
protected String doInBackground(String... urls) {
// json parsing is called in getData()
try {
return getData(urls[0]);
} catch (IOException e) {
return "Could not load text";
}
}
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:3329)
at android.view.View.draw(View.java:16181)
at android.widget.AbsListView.draw(AbsListView.java:4142)
at android.view.View.updateDisplayListIfDirty(View.java:15174)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
at android.view.View.updateDisplayListIfDirty(View.java:15134)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
at android.view.View.updateDisplayListIfDirty(View.java:15134)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
at android.view.View.updateDisplayListIfDirty(View.java:15134)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
at android.view.View.updateDisplayListIfDirty(View.java:15134)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
at android.view.View.updateDisplayListIfDirty(View.java:15134)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
at android.view.View.updateDisplayListIfDirty(View.java:15134)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2615)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)