取消选中列表中的项目后,我的应用关闭

时间:2018-06-24 13:05:16

标签: android

我想放置一个警报对话框来检查列表中的某些项目。我可以选择项目,但取消选中后我的应用程序将关闭。这是我的代码:

AlertDialog.Builder builder=new AlertDialog.Builder(getContext());
    builder.setTitle("Title");

    builder.setMultiChoiceItems(listItem, kontolItem, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int position, boolean isChecked) {

            if(isChecked){
                if(!userCheckedItems.contains(position)){
                    userCheckedItems.add(position);
                }
            } else if(userCheckedItems.contains(position)){
                userCheckedItems.remove(position);
            }
        }
    });

logcat错误:

  

java.lang.IndexOutOfBoundsException:索引:2,大小:1 at   java.util.ArrayList.remove(ArrayList.java:503)在   com.kaydeniz.ihaleajandasi2.IhaleKriterleriSecDialogFragment $ 3.onClick(IhaleKriterleriSecDialogFragment.java:118)

userCheckedItems.remove(position);”上有问题,因为这是在logcat上写的。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

列表api的remove函数为索引和对象重载。而且您的userCheckedItems列表包含整数,因此当您调用remove时,它将尝试按索引将其删除并导致错误。为避免混淆,您可以检查项目索引并按索引将其删除。要找出您的项目索引,可以调用indexOf函数。要解决崩溃问题,您可以执行以下操作:

else if(userCheckedItems.contains(p)){
       int indexOfItem = userCheckedItems.indexOf(p);
       userCheckedItems.remove(indexOfItem);
  }