我有一個對話框與複選框,我試圖做不同的事情時,選擇選項和按下好的時候。我認爲在閱讀完一些教程後我知道自己在做什麼,但是當我按下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