android - 具有多种选择和自定义 View 的对话框

标签 android android-adapter android-dialog

我现在已经为这个问题苦苦挣扎了一天,我只是想不出如何解决它。

因此,我有一个 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/

相关文章:

android - 相机 Intent 后 NFC 停止在设备上工作

android - 带有 EditText 的回收器 View 适配器

android - 如何将对话框窗口包装到内容中?

android - ListView.setSelection 不工作

android 获取组中选中的复选框

android - keytool 错误 : java. io.IOException:无效的 keystore 格式 - Android

java - 如何在 ChromeDriver 使用 Appium 和 Android Studio 上禁用保存密码

java - 如何将我的 ListView 适配器转换为 RecyclerView 适配器?

android - 当变量不为空时,自定义适配器的 getview 抛出 NullPointerException

android - 使用自定义 View 的 Dialogfragment 中的 ViewBinding