Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新填充ArrayList后的IndexOutOfBoundsException(仅限棉花糖)_Java_Android_Arraylist_Android Asynctask_Android 6.0 Marshmallow - Fatal编程技术网

Java 重新填充ArrayList后的IndexOutOfBoundsException(仅限棉花糖)

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

我的设置如下:在onCreate中,我按如下方式初始化ArrayList:

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)