Android AlertDialog.Builder.setSingleChoiceItems将生成一个多选列表

Android AlertDialog.Builder.setSingleChoiceItems将生成一个多选列表,android,android-alertdialog,Android,Android Alertdialog,我已经用AlertDialog.Builder创建了一个AlertDialog,使用setSingleChoiceItems将ListAdapter设置为从CursorAdapter派生的自定义类: AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("Title") .setSingleChoiceItems(mAdapter, -1, new DialogI

我已经用
AlertDialog.Builder
创建了一个
AlertDialog
,使用
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.
           }});

因此,似乎是适配器导致了问题。我仍然不确定原因。

正如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);

但是你不认为
mAdapter
的类型,以及它的定义(如果是自定义类型)对你的问题很重要,因为你对
mAdapter
有问题,但对其他任何问题都不重要?这非常重要。我知道这就是原因。非常感谢。适配器绑定到使用复选框的自定义布局。我想我不能重复使用那个代码。