android - 在 Android 中设置 ListView Alert Dialog 的默认选中项

标签 android listview android-alertdialog

我创建了一个带有自定义 ListView 的对话框,它模拟了一个 Spinner 显示,最初它以值“Select Gender”开始。

当对话框打开时,它会提示进行选择(就像微调器一样)。如果选择再次被选中,它会显示相同的选项,但不会指示哪个选项已被选中。

示例:
默认值:“选择性别”
没有选择的对话框打开
用户选择:“男性”
用户重新打开对话框...
对话框打开时没有选择

(我希望选择“男性”,因为那是他们最后一次选择)

到目前为止,这是我的代码:

genderItems = getResources().getStringArray(R.array.gender_array);
genderAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, genderItems);

genderDrop.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                Builder genderBuilder = new AlertDialog.Builder(Register.this)
                    .setTitle(R.string.gender_prompt)
                    .setAdapter(genderAdapter, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        inputGender.setText(genderItems[which]);
                        dialog.dismiss();
                    }
                });
                AlertDialog genderAlert = genderBuilder.create();
                genderAlert.show();
                genderAlert.getListView().setSelection(0);
            }
            return false;
        }
});

genderAlert.getListView().setSelection(0) 不设置默认选择为“男性”
genderAlert.getListView().setSelection(1) 不设置默认选择为“女性”

最佳答案

想通了:

我从 .setAdapter 切换到 .setSingleChoiceItems,它有一个默认选择的参数。然后我所要做的就是创建一个全局变量,每次我单击一个选项时都会设置它。全局变量最初设置为 -1,因此未选择任何选项,然后一旦我单击某个内容,它就会设置为该位置,下次创建对话框时,选择会反射(reflect)我之前的选择。见下文:

Integer selection = -1;

genderItems = getResources().getStringArray(R.array.gender_array);
genderAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, genderItems);

genderDrop.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                Builder genderBuilder = new AlertDialog.Builder(Register.this)
                    .setTitle(R.string.gender_prompt)
                    .setSingleChoiceItems(genderAdapter, selection, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            inputGender.setText(genderItems[which]);
                            selection = which;
                            dialog.cancel();
                        }
                    });
                AlertDialog genderAlert = genderBuilder.create();
                genderAlert.show();
            }
            return false;
        }
});

关于android - 在 Android 中设置 ListView Alert Dialog 的默认选中项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188980/

相关文章:

c# - 无法从 DoWork() 内部从 MySQL 数据库获取信息

android - AlertDialog - 不要关闭项目点击

android - 在android中将透明背景设置为alertdialog

javascript - Android Studio(网页帮助)net : ERR_FILE_NOT_FOUND

android - 无法打开目录 Xamarin Forms

android - 使用 getPixel() 方法提取的巨大负值

wpf - WPF如何使列表框/ ListView 无法定位

php - 从PHP脚本exec()执行时,无法从gradle中获取输出

android - 将变量从 ListView 传递到另一个 Activity

java - 在 Android 中创建简单对话框的快捷方式