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