我创建了一个对话框,其中包含对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)
未将默认选择设置为“女性”
答案 0 :(得分:20)
想出来:
我从.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;
}
});