1

我创建了一个AlertDialog使用AlertDialog.BuildersetSingleChoiceItems将其设置为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传递 aString[]作为列表项源而不是适配器,我会得到所需的结果:

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.
           }});

所以看起来适配器会导致问题。我仍然不确定为什么。

4

1 回答 1

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);
于 2013-01-02T15:01:44.507 回答