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
有问题,但对其他任何问题都不重要?这非常重要。我知道这就是原因。非常感谢。适配器绑定到使用复选框的自定义布局。我想我不能重复使用那个代码。