在Android中设置ListView警告对话框的默认选择项

10

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

当打开对话框时,会提示进行选择(就像一个 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)方法并未将默认选项设置为“Male”
genderAlert.getListView().setSelection(1)方法也并未将默认选项设置为“Female”

1个回答

23

问题解决了:

我从.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 是什么? - Narendra Singh
哎呀,这是很久以前的事情了,所以我甚至不确定我是否记得清楚。我想它可能是某种按钮。在这个意义上,“genderDrop”有点不准确,因为它实际上只是打开了一个“AlertDialog”。 - Rawr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接