在Android中设置ListView Alert Dialog的默认select项

我创build了一个对话框,其中包含一个自定义ListView ,用于为Spinner显示进行build模,最初它以“Select Gender”值开始。

当对话框打开时,它会提示select(就像一个微调)。 如果select被再次select,则它显示相同的选项,但不指示已经select了哪个选项。

例:
默认值:“select性别”
对话框打开时没有select
用户select:“男”
用户重新打开对话框…
对话框打开时没有select

我希望它有“男性”的select,因为这是他们最后的select

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

 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) 不会将选中的默认设置为“女”

Solutions Collecting From Web of "在Android中设置ListView Alert Dialog的默认select项"

弄清楚了:

我从.setAdapter切换到.setSingleChoiceItems有默认select的参数。 然后,我所要做的就是创build一个全局variables,每次点击一个选项就被设置。 全局variables最初被设置为-1,所以没有select选项,然后一旦我点击某些东西被设置到位置,下次创build对话框时,select反映了我以前的select。 见下文:

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