如何按值而不是按位置设置微调器的选定项目?
我有一个更新视图,我需要在其中预先选择存储在数据库中的微调器的值。
我当时的想法是这样的,但是没有办法,所以我被困住了。Adapter
indexOf
void setSpinner(String value)
{
int pos = getSpinnerField().getAdapter().indexOf(value);
getSpinnerField().setSelection(pos);
}
我有一个更新视图,我需要在其中预先选择存储在数据库中的微调器的值。
我当时的想法是这样的,但是没有办法,所以我被困住了。Adapter
indexOf
void setSpinner(String value)
{
int pos = getSpinnerField().getAdapter().indexOf(value);
getSpinnerField().setSelection(pos);
}
假设你的被命名为 ,并且它包含作为其选择之一:“一些值”。Spinner
mSpinner
要查找和比较微调器中“某些值”的位置,请使用以下命令:
String compareValue = "some value";
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.select_state, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
if (compareValue != null) {
int spinnerPosition = adapter.getPosition(compareValue);
mSpinner.setSelection(spinnerPosition);
}
根据值设置微调器的一种简单方法是
mySpinner.setSelection(getIndex(mySpinner, myValue));
//private method of your class
private int getIndex(Spinner spinner, String myString){
for (int i=0;i<spinner.getCount();i++){
if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(myString)){
return i;
}
}
return 0;
}
复杂代码的方法已经存在,这要简单得多。