我使用AlertDialog
使用AlertDialog.Builder
创建setSingleChoiceItems
,将ListAdapter
设置为源自CursorAdapter
的自定义类:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Title")
.setSingleChoiceItems(mAdapter, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
// Do nothing.
}})
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
Log.d(TAG, "Ok clicked.");
}})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
Log.d(TAG, "Cancel clicked.");
}});
尽管使用setSingleChoiceItems()
,但我生成的对话框包含一个带复选框的列表,可以检查多个项目。我希望看到带有单选按钮的列表。
如何让对话框只允许选择一个项目,并使用单选按钮显示该选项?
更新
如果我将setSingleChoiceItems
作为列表项源而不是适配器调用String[]
,我会得到所需的结果:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Title")
.setSingleChoiceItems(new String[] {"one","two","three"}, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
// Do nothing.
}});
所以看来适配器会导致问题。我仍然不确定为什么。
答案 0 :(得分:3)
正如K-ballo暗示的那样,问题在于自定义适配器。它使用带复选框的自定义布局。我用SimpleCursorAdapter
替换了自定义适配器,它按预期工作:
mAdapter = new SimpleCursorAdapter(getActivity(),
android.R.layout.simple_list_item_single_choice,
null,
new String[] { "title" },
new int[] { android.R.id.text1 },
0);