我现在已经为这个问题苦苦挣扎了一天,我只是想不出如何解决它。
因此,我有一个 AlertDialog,我想在其中显示要选择的项目列表。这些项目必须有多个 TextView ,所以我不能依赖使用默认格式的构建器上的简单 setMultiChoiceItems()
。
我在这里使用我的自定义 ArrayAdapter,方法是:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose details to display");
builder.setAdapter(new ContactAdapter(this, 0, items), null);
我想我可以使用 OnClickListener
作为 setAdapter
的第二个参数,但是在选择一个选项后关闭对话框。
为了解决这个问题,我在提取行布局时在 ContactsAdapter 中添加了一个 setOnClickListener()
,如下所示:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.contact_row, null);
view.setOnClickListener(new OnClickListener() {....}
这行得通,但是当我点击一行时我不再突出显示,这是我真的不想要的。
有什么解决办法吗?我知道我可以使用 ListActivity,这很容易解决,但我真的想在对话框中执行此操作。谢谢!
最佳答案
如果您认为使用 ListActivity
很容易做到,为什么不这样做并使用 setTheme(android.R.style.Theme_Dialog)
或 android:theme="@android:style/Theme.Dialog"
用于应用程序 list 中的 Activity?
如果您的目标是 hive 或 Ice Cream Sandwich (Android 3.0+),则称为 setTheme(android.R.style.Theme_Holo_Dialog)
和 android:theme="@android: style/Theme.Holo.Dialog"
.
关于android - 具有多种选择和自定义 View 的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7891407/