2

我现在正在为这个问题苦苦挣扎一天,我只是不知道如何解决它。

所以,我有一个 AlertDialog,我想在其中显示要选择的项目列表。这些项目必须有多个文本视图等,所以我不能依赖setMultiChoiceItems()使用默认格式的简单构建器。

我在这里使用我的自定义 ArrayAdapter,这样做:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose details to display");
builder.setAdapter(new ContactAdapter(this, 0, items), null);

我以为我可以使用 anOnClickListener作为第二个参数,setAdapter但是在选择一个选项后会关闭对话框。

为了解决这个问题,我setOnClickListener()在获取行布局时在我的 ContactsAdapter 中添加了一个,如下所示:

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.contact_row, null);
view.setOnClickListener(new OnClickListener() {....}

这可行,但是当我单击一行时,我会停止突出显示,这是我真的不想要的。

任何想法如何解决这个问题?我知道我可以使用 ListActivity 并且这很容易解决,但我真的想在对话框中执行此操作。谢谢!

4

1 回答 1

2

如果您认为使用 a 很容易ListActivity,为什么不这样做并使用应用程序清单中的 ActivitysetTheme(android.R.style.Theme_Dialog)使用对话框主题?android:theme="@android:style/Theme.Dialog"

如果您的目标是 Honeycomb 或 Ice Cream Sandwich (Android 3.0+),它被称为setTheme(android.R.style.Theme_Holo_Dialog)and android:theme="@android:style/Theme.Holo.Dialog"

于 2011-10-25T15:29:13.797 回答