【问题标题】:Set default selected item of ListView Alert Dialog in Android在Android中设置ListView Alert Dialog的默认选中项
【发布时间】:2012-08-30 02:10:30
【问题描述】:

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

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

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

我希望它选择“男性”,因为这是他们最后一次选择

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

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) 没有将默认选择设置为“女性”

【问题讨论】:

    标签: android listview android-alertdialog


    【解决方案1】:

    想通了:

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

    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;
            }
    });
    

    【讨论】:

    • 这里的genderDrop 是什么?
    • 这已经是很久以前的事了,所以我什至不确定我是否记得。我认为它可能是某种按钮。 genderDrop 在这个意义上有点用词不当,因为它实际上只是打开了一个 AlertDialog
    猜你喜欢
    • 2015-02-20
    • 1970-01-01
    • 2011-05-23
    • 2014-05-26
    • 2017-12-11
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多