在Android中设置ListView警报对话框的默认选定项

Raw*_*awr 10 android listview android-alertdialog

我创建了一个对话框,其中包含一个ListViewSpinner显示器建模的自定义,最初它以值"选择性别"开始.

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

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

(我希望选择"男性",因为那是他们最后的选择)

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

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;
        }
});
Run Code Online (Sandbox Code Playgroud)

genderAlert.getListView().setSelection(0) 未将默认设置选为 "男性"
genderAlert.getListView().setSelection(1) 未将默认选项设置为"女性"

Raw*_*awr 21

弄清楚了:

我切换.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;
        }
});
Run Code Online (Sandbox Code Playgroud)