我正在嘗試使用動態數據構建多選AlertDialog。AlertDialog MultiChoice沒有給我正確的選擇
好的,這一切都加載偉大等,但選擇是搞砸了。
這裏是我的代碼:
new AlertDialog.Builder(this)
.setTitle("Cities")
.setMultiChoiceItems(_options, _selections, new DialogInterface.OnMultiChoiceClickListener(){
@Override
public void onClick(DialogInterface dialog, int clicked, boolean selected) {
Log.i("Database", _options[clicked] + " selected: " + selected);
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int clicked) {
switch(clicked) {
case DialogInterface.BUTTON_POSITIVE:
for(int i = 0; i < _options.length; i++){
Log.i("Database", "id: " + _values[i] + " " + _options[i] + " selected: " + _selections[i]);
}
break;
}
}
})
.create();
正如你可以在logcat中看到,我描述了我的問題:
** OPENED ALERTDIALOG VIA A BUTTON AND SELECTED THE FOLLOWING: **
07-12 16:06:51.347: I/Database(8034): Aveiro selected: true
07-12 16:06:53.936: I/Database(8034): Coimbra selected: true
07-12 16:07:00.116: I/Database(8034): Porto selected: true
** AFTER PRESSING THE OK BUTTON, THIS SHOWS UP, WHICH IS CORRECT: **
07-12 16:07:02.826: I/Database(8034): id: 1 Aveiro selected: true
07-12 16:07:02.826: I/Database(8034): id: 2 Coimbra selected: true
07-12 16:07:02.826: I/Database(8034): id: 3 Porto selected: true
07-12 16:07:02.826: I/Database(8034): id: 4 Minho selected: false
** I CLICKED THE BUTTON TO START THE DIALOG AGAIN DE UNSELECTED THE FOLLOWING: **
07-12 16:07:07.087: I/Database(8034): Coimbra selected: false
** AFTER PRESSING THE OK BUTTON, ALL SHOWS AS FALSE. 1 AND 3 SHOULD BE TRUE: **
07-12 16:07:08.097: I/Database(8034): id: 1 Aveiro selected: false
07-12 16:07:08.097: I/Database(8034): id: 2 Coimbra selected: false
07-12 16:07:08.097: I/Database(8034): id: 3 Porto selected: false
07-12 16:07:08.097: I/Database(8034): id: 4 Minho selected: false
你在哪裏更新這些陣列? – 2012-07-12 15:41:44
哪些?如果它是'_selections',則它由AlertDialog方法'.setMultipleChoiceItems'自動更新。如果你問別人,他們對這個問題並不重要,我唯一的問題是'_selections'數組。 – silentw 2012-07-12 15:50:27
剛剛試過你的代碼,它對我來說工作得很好。添加了我用來測試的代碼,所以你可以看到它。 – prolink007 2012-07-12 16:05:36