我有一个对话框与复选框,我试图做不同的事情时,选择选项和按下好的时候。我认为在阅读完一些教程后我知道自己在做什么,但是当我按下OK时,即使没有选中它,它也会提醒“一切”。所以看来我的if语句不能正常工作,但我不知道为什么。Android复选框对话框(简单)
任何建议我做错了什么,以及如何解决它将不胜感激!
final CharSequence[] items = {"Item 1", "Item 2", "Item 3"};
final boolean[] states = {false, false, false};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("What would you like to do?");
builder.setMultiChoiceItems(items, states, new DialogInterface.OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialogInterface, int item, boolean state) {
}
});
builder.setPositiveButton("Okay", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
SparseBooleanArray CheCked = ((AlertDialog)dialog).getListView().getCheckedItemPositions();
if(CheCked.get(CheCked.keyAt(0)) == true){
Toast.makeText(Backup.this, "Item 1", Toast.LENGTH_SHORT).show();
}
if(CheCked.get(CheCked.keyAt(1)) == true){
Toast.makeText(Backup.this, "Item 2", Toast.LENGTH_SHORT).show();
}
if(CheCked.get(CheCked.keyAt(2)) == true){
Toast.makeText(Backup.this, "Item 3", Toast.LENGTH_SHORT).show();
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create().show();
}
完美的谢谢你们两个都很好的工作 – GFlam 2011-05-12 20:40:14
@rekaszenu我认为这个解决方案也更好。特别是对于大型列表。循环需要更多的资源。 – evilone 2011-05-13 10:39:55
使用api的方式(几乎)总是比使用方法的更好,但在大多数情况下,阅读文档只是无聊; :)这导致将'CheCked'成员作为ListView'项目的完整'Map'和它们的检查状态来处理。 – rekaszeru 2011-05-13 11:03:28