Java android中带有复选框的AlertDialog

Java android中带有复选框的AlertDialog,java,android,Java,Android,我有一个AlertDialog,有几个复选框,并启用了多项选择。我希望在单击“确定”按钮后,将所有选中项的值存储在字符串变量中。但我只能得到最后一项检查的值。我希望所有的值都存储在一个字符串变量中 下面是我的AlertDialog代码片段 final CharSequence[] itemsForPattern = { "Patchy", "Wavy Markings", "Stripes", "Bands"}; String paternSelected = null; final Ar

我有一个AlertDialog,有几个复选框,并启用了多项选择。我希望在单击“确定”按钮后,将所有选中项的值存储在字符串变量中。但我只能得到最后一项检查的值。我希望所有的值都存储在一个字符串变量中

下面是我的AlertDialog代码片段

final CharSequence[] itemsForPattern = { "Patchy", "Wavy Markings", "Stripes", "Bands"};   
String paternSelected = null;
final ArrayList<Object> selectedItems = new ArrayList<>();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select the pattern on the wing");

builder.setMultiChoiceItems(itemsForPattern, null, new DialogInterface.OnMultiChoiceClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
        // TODO Auto-generated method stub
        if(isChecked){
            selectedItems.add(indexSelected);
        }
        else if(selectedItems.contains(indexSelected)){
           //This line is giving arrayIndexOutOfBounds exception after unchecking a checkeditem
            selectedItems.remove(indexSelected); 
        }}
})
  .setPositiveButton("OK", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub

        //Here I'm successfully able to get the checked item values 
        for(int i= 0; i < selectedItems.size(); i++){
            paternSelected = (String) itemsForPattern[(int) selectedItems.get(i)];
            tv_Choosen.append("(" + paternSelected + ")");
        }

        if(patternCode.equalsIgnoreCase("hind-wing")){
         // Here I'm trying to save all the values in one single String variable for which 
         // I'm getting only the last checked value here
            String S2DB_hw_pattern = paternSelected;
        }
        else
         String S2DB_fw_pattern = paternSelected;
    }
})
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // TODO Auto-generated method stub

    }
});

dialog = builder.create();
dialog.show(); 
if(已检查){
selectedItems.add(indexSelected);
}
else if(selectedItems.contains(indexSelected)){
//在取消选中checkeditem后,此行给出arrayIndexOutOfBounds异常

selectedItems.remove(selectedItems.indexOf(indexSelected));//太棒了,这对你来说很有用。如果可能,请投票。。快乐编码:)
 E/AndroidRuntime(1915): FATAL EXCEPTION: main
E/AndroidRuntime(1915): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
09-17 17:49:30.586: E/AndroidRuntime(1915):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at java.util.ArrayList.remove(ArrayList.java:399)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at com.example.projectb.main.ImageMapTestActivity$3.onClick(ImageMapTestActivity.java:532)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at com.android.internal.app.AlertController$AlertParams$4.onItemClick(AlertController.java:953)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.widget.AdapterView.performItemClick(AdapterView.java:298)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.widget.AbsListView$1.run(AbsListView.java:3423)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.os.Handler.handleCallback(Handler.java:725)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.os.Looper.loop(Looper.java:137)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at android.app.ActivityThread.main(ActivityThread.java:5039)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at java.lang.reflect.Method.invokeNative(Native     Method)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at java.lang.reflect.Method.invoke(Method.java:511)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-17 17:49:30.586: E/AndroidRuntime(1915):     at dalvik.system.NativeStart.main(Native Method)
if(isChecked){
        selectedItems.add(indexSelected);
    }
    else if(selectedItems.contains(indexSelected)){
       //This line is giving arrayIndexOutOfBounds exception after unchecking a checkeditem
        selectedItems.remove(selectedItems.indexOf(indexSelected)); //<--Add this
    }}