0

我有一个问题,我有一个 for 循环,它遍历一个数组列表并检查一个值是否是某物,如果是,它会删除列表视图中的一行……不过我遇到了麻烦,这是代码。 ..

 for (int i=0; i<displayList.size(); i++)
                {
                    Object toRemove = mAdapter.getItem(i);
                    Log.e("Counter+++",String.valueOf(i));

                    if (!firstname.equals("")) {
                        if (firstnamefilterstring.equals("Contains"))
                        {
                            if (!displayList.get(i).getFirstname().contains(firstname))
                            {
                                //displayList.remove(listView.getItemAtPosition(i));   doesnt work
                               // displayList.remove(toRemove); doesnt work either
                                L.e("1");
                            }
问题是通过调试我已经意识到这个循环只运行了6/12次(for循环是12个元素大),我不知道为什么......通过一些额外的调试,我意识到这两行“不起作用“如果您将它们注释掉,它运行良好(12 次),但是对于这两行中的任何一条,它都不会......我在这里迷路了,

4

1 回答 1

2

它运行一半时间的原因是您正在从显示列表中删除项目,因此displayList.remove.

java.util.ArrayList.remove(int index) 方法删除此列表中指定位置的元素。将任何后续元素向左移动(从它们的索引中减去 1)。

于 2018-07-07T01:07:58.507 回答