Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 删除回收器视图项的循环中出错。(制作循环崩溃应用程序)_Java_Android_Loops_Android Recyclerview - Fatal编程技术网

Java 删除回收器视图项的循环中出错。(制作循环崩溃应用程序)

Java 删除回收器视图项的循环中出错。(制作循环崩溃应用程序),java,android,loops,android-recyclerview,Java,Android,Loops,Android Recyclerview,现行守则: int length = MyData.dates.length; for(int i = 0; i<length; i++){ View x = mRecyclerView.getChildAt(i); if(x != null) { length--; //if(MyData.dates[i].before(

现行守则:

int length = MyData.dates.length;
            for(int i = 0; i<length; i++){
                View x = mRecyclerView.getChildAt(i);
                if(x != null) {
                    length--;
                    //if(MyData.dates[i].before(today)){
                        RecyclerView.ViewHolder mViewHolder = mRecyclerView.findViewHolderForPosition(i);
                            TextView textViewName = (TextView) mViewHolder.itemView.findViewById(R.id.textViewMatch);
                            String selectedName = (String) textViewName.getText();
                            int selectedItemId = -1;
                            if (selectedName.equals(MyData.matchArray[i])) {
                                selectedItemId = MyData.id_[i];
                            }
                            removedItems.add(selectedItemId);
                            matches.remove(i);
                            mAdapter.notifyItemRemoved(i);
                    //}
                }
            }
我有其他阵列,我认为它们不会引起麻烦

该项目基于教程:

单击并删除可以正常工作

错误:

java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
        at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
        at java.util.ArrayList.remove(ArrayList.java:403)
        at com.wc.gap.worldcupfixture.MainActivity.onSectionAttached(MainActivity.java:186)
        at com.wc.gap.worldcupfixture.MainActivity$PlaceholderFragment.onAttach(MainActivity.java:294)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
如果你有一个循环

for( int i = 0; i < some.length; ++i ){
    // ...
    someList.remove( i );

}
for(int i=0;i
这几乎必然会遇到IndexOutOfBounds,因为
someList
在每次迭代时都会缩短,i的连续值将超过最大可用索引


可以通过使用递减的索引值来解决问题。

对于(int j…
)使用
的目的是什么?j没有在任何地方使用。请指出IOOB的行以及数组是如何创建的。我决定不使用j,也从未删除过它。无论如何,它不会带来任何麻烦。错误在以下行:
匹配。删除(I);
(什么是IOOB?)发布包含不稳定剩余内容的代码不好。IOOB=IndexOutOfBounds。--那么什么是匹配项?它是如何创建的?非常抱歉。我应该发布我的全部代码吗?(尚未整理)匹配项是:matches=new ArrayList();recycler ListriiLight的数组。那么解决方法是什么?我不能使用匹配项,长度可能是因为它具有可变长度。答案中添加了一个建议。其他选项更复杂,例如,将剩余元素复制到新列表并替换旧列表。
for( int i = 0; i < some.length; ++i ){
    // ...
    someList.remove( i );

}