我有这个代码来显示带有单选(无线电)选项的对话框。
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();
如何获得已选择的选项?
答案 0 :(得分:100)
我知道这是一篇很老的帖子,但我刚刚发现它,发现这个解决方案看起来有点简单了,这里发布了什么。
你可以这样做:
在对话框肯定按钮的onClick()
处理程序中,添加以下代码:
ListView lw = ((AlertDialog)dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());
答案 1 :(得分:14)
我尝试使用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
}
}
})
答案 2 :(得分:3)
我相信您使用OnClickListener
setSingleChoiceItems()
,只要选择了某个项目就会收听;然后,一旦用户点击好,您就可以将该项目设置为一成不变。现在你只是传递null,所以没有什么你不能选择哪个项目。
答案 3 :(得分:1)
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)。这就是全部:))
答案 4 :(得分:0)
您可以在 onClick()方法
中执行此操作final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.edit_set_waiting_period)
.setItems(R.array.str_set_waiting_period, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
L.e("selectedItmes", which + "");
ListView lw = ((AlertDialog) dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(which);
L.e("checkedItem", checkedItem.toString() + "");
}
});
builder.show();
答案 5 :(得分:-8)
EditText et = (EditText)findViewById(R.id.editText9);
int a = Integer.valueOf(item);
et.setText(items[a]);