0
複数のリスト選択リスナーが含まれているアラートダイアログがあります。問題は、複数のアイテムを選択した後に最初のダイアログを開くときに、ポジティブボタンを押してから、開いたアラートダイアログで最後に開いたアイテムを選択したものが何も選択されていないことを示します。毎回このコードインは、それに提供される新しいAlertDialogが(ライン2)とis_checked
の新しい配列を構築されている起動のでAlertDialogを開いたときにポジティブボタンで選択した項目をリストに表示
final CharSequence[] dialogList= list.toArray(new CharSequence[list.size()]);
final AlertDialog.Builder builderDialog = new AlertDialog.Builder(SchoolFieldsData.this);
builderDialog.setTitle("Enter Average Fee");
int count = dialogList.length;
boolean[] is_checked = new boolean[count]; // set is_checked boolean false;
// Creating multiple selection by using setMutliChoiceItem method
builderDialog.setMultiChoiceItems(dialogList, is_checked,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog,
int whichButton, boolean isChecked) {
}
});
builderDialog.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ListView list = ((AlertDialog) dialog).getListView();
// make selected item in the comma seprated string
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < list.getCount(); i++) {
boolean checked = list.isItemChecked(i);
if (checked) {
if (stringBuilder.length() > 0) stringBuilder.append(",");
stringBuilder.append(list.getItemAtPosition(i));
}
}
/*Check string builder is empty or not. If string builder is not empty.
It will display on the screen.
*/
if (stringBuilder.toString().trim().equals("")) {
// ((TextView) findViewById(R.id.text)).setText("Click here to open Dialog");
stringBuilder.setLength(0);
} else {
// ((TextView) findViewById(R.id.text)).setText(stringBuilder);
}
}
});
builderDialog.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// ((TextView) findViewById(R.id.text)).setText("Click here to open Dialog");
}
});
AlertDialog alert = builderDialog.create();
alert.show();
次に、項目を設定する方法を確認します。ダイアログが再び表示されたら? –
あなたはこのような行を持っています: 'boolean [] is_checked = new boolean [count];'。代わりに、 'boolean [] is_checked = old_answers'と書いて、以前にチェックされたボタンを参照します。 –
私は状態を保存しました。あなたの答えに今私はチェックマークが入っている配列を持っているマーク。リストの表示時に値を設定する方法は? –