Как получить выбранный элемент диалогового окна Alert Dialog?
У меня есть этот код, чтобы показать диалог с параметрами singlechoice (радио).
AlertDialog ad = new AlertDialog.Builder(this)
.setCancelable(false)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.choose_one)
.setSingleChoiceItems(seq, pos,null)
.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() {
public void onClick( DialogInterface dialog, int whichButton)
{
// dialog dismissed
}
}).create();
Как выбрать выбранный вариант?
Ответы
Ответ 1
Я знаю, что это старый пост, но я просто наткнулся на него и обнаружил, что это решение кажется немного более простым, что было опубликовано здесь.
Вы можете просто сделать следующее:
В вашем обработчике onClick()
на положительной кнопке диалога добавьте следующий код:
ListView lw = ((AlertDialog)dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());
Ответ 2
Я пытался использовать ListView.setSelection(int)
, но он никогда не работал так, как ожидалось, поэтому вместо этого я решил временно использовать View.setTag() сохраните выбранную позицию.
.setSingleChoiceItems(adapter, -1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ListView lv = ((AlertDialog)dialog).getListView();
lv.setTag(new Integer(which));
}
})
После нажатия кнопки тег можно легко получить.
.setPositiveButton(R.string.button_text,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ListView lv = ((AlertDialog)dialog).getListView();
Integer selected = (Integer)lv.getTag();
if(selected != null) {
// do something interesting
}
}
})
Ответ 3
Я считаю, что вы используете OnClickListener
для setSingleChoiceItems()
для прослушивания всякий раз, когда элемент был выбран; то, как только пользователь ударит, вы установите этот камень. Прямо сейчас вы просто пропускаете null, поэтому ничего не можете выбрать, какой элемент был выбран.
Ответ 4
1). создать массив.
final ArrayList<String> arrData = new ArrayList<String>();
2). добавьте данные в массив, который вы создали.
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
arrData .add(cursor.getString(1));
// (1 = int columnIndex)
} while (cursor.moveToNext());
}
}
3). получите данные, подобные этому.
public void onClick(DialogInterface dialog, int item) {
Log.d("Selected", arrData.get(item) + "");
}
4). что все:)
Ответ 5
Вы можете сделать это в режиме onClick()
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.edit_set_waiting_period) .setItems(R.array.str_set_waiting_period, новый DialogInterface.OnClickListener() { public void onClick (диалог DialogInterface, int which) { // Аргумент 'which' содержит позицию индекса // выбранного объекта L.e( "selectedItmes", который + "");
ListView lw = ((AlertDialog) dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(which);
L.e("checkedItem", checkedItem.toString() + "");
}
});
builder.show();
Ответ 6
EditText et = (EditText)findViewById(R.id.editText9);
int a = Integer.valueOf(item);
et.setText(items[a]);