Java 在AlertDialog中引用多个复选框
嘿,Android开发者们,我对下面的代码有一个问题。我无法找到一种方法来轻松引用单击的复选框,目前下面的代码只是一个首选项,单击时,会显示一个带有多个复选框的AlertDialog 当复选框被选中时,目标是做一些特定的事情,但是我想对每个项目做一些可能不同的事情 代码Java 在AlertDialog中引用多个复选框,java,android,android-alertdialog,android-preferences,android-checkbox,Java,Android,Android Alertdialog,Android Preferences,Android Checkbox,嘿,Android开发者们,我对下面的代码有一个问题。我无法找到一种方法来轻松引用单击的复选框,目前下面的代码只是一个首选项,单击时,会显示一个带有多个复选框的AlertDialog 当复选框被选中时,目标是做一些特定的事情,但是我想对每个项目做一些可能不同的事情 代码 首选项checkboxalert=(首选项)FindReference(“checkboxalert”); checkboxalert .setOnPreferenceClickListener(新的OnPreferenceCl
首选项checkboxalert=(首选项)FindReference(“checkboxalert”);
checkboxalert
.setOnPreferenceClickListener(新的OnPreferenceClickListener(){
final CharSequence[]items={“容易”、“中等”、“难”、“非常难”};
final ArrayList selectedItems=new ArrayList();
公共布尔值打开首选项单击(首选项){
AlertDialog.Builder=新建AlertDialog.Builder(上下文);
builder.setTitle(“选择难度级别”);
builder.setMultiChoiceItems(项,空,
新的DialogInterface.OnMultiChoiceClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int indexSelected,
布尔值(已检查){
如果(已检查){
//我要引用已单击的复选框的位置
selectedItems.add(indexSelected);
i(“首选项-复选框”,“单击了某个内容”);
}如果(selectedItems.contains(indexSelected)){
选择editems.remove(Integer.valueOf(indexSelected));
}
}
})
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface对话框,int-id){
}
});
dialog=builder.create();
dialog.show();
返回true;
}
});
使用索引有什么问题
@Override
public void onClick(DialogInterface dialog, int indexSelected,boolean isChecked)
{
if (isChecked) {
selectedItems.add(indexSelected);
//WHERE I WANT TO REFERENCE WHICH CHECKBOX IS CLICKED
switch (indexSelected)
{
case 0:
// do something if the first box is checked
break;
case 1:
// do something if the second box is checked
break;
...
}
}
除非我错过了你想要的东西,否则这似乎应该会起作用。这非常有效,因为某些原因,我不想这样做。我猜我最初的方法是通过标题而不是索引引用复选框。但这更好!。是的,以这样的方式引用,例如索引
或资源id
,这取决于您使用的是什么,通常更好、更安全。如果你决定改变,把“难”改为“难”,那么你就不必改变引用它的方式。
@Override
public void onClick(DialogInterface dialog, int indexSelected,boolean isChecked)
{
if (isChecked) {
selectedItems.add(indexSelected);
//WHERE I WANT TO REFERENCE WHICH CHECKBOX IS CLICKED
switch (indexSelected)
{
case 0:
// do something if the first box is checked
break;
case 1:
// do something if the second box is checked
break;
...
}
}