在 android 中设置微调器位置
Setting spinner position in android
我将 MaterialBetterSpinner 库用于微调器,但无法设置到指定位置。
String[] LIST = {"Item1", "Item2", "Item3", "Item4", "Item5"};
MaterialBetterSpinner spinnerItem = (MaterialBetterSpinner) findViewById(R.id.spinnerItem);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, LIST);
String str = "Item3";
for(int i=0; i < adapter1.getCount(); i++) {
if(str.trim().equals(adapter1.getItem(i).toString())){
spinnerItem.setSelection(i);
break;
}
}
我得到以下异常
Caused by: java.lang.IndexOutOfBoundsException: setSpan (1 ... 1) ends beyond length 0
这来自 Android 开发者
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
创建适配器后,您只需调用 spinner.setAdapter(adapter)
而不是每个项目
编辑:
将特定项目设置为默认值
String string = 'my string';
int spinnerPosition = adapter.getPosition(string);
spinner.setSelection(spinnerPosition);
编辑 2:
由于问题 (https://github.com/Lesilva/BetterSpinner/issues/13) 也由 Jorge Casariego 指定,请使用 setText 但如果您知道字符串在微调器中,您可以仅使用
改进他的代码
spinner.setText(string)
根据这个 issue 解决方案是使用 getText()
因此,您可以使用默认值来执行此操作
String[] LIST = {"Item1", "Item2", "Item3", "Item4", "Item5"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, LIST);
spinner1.setAdapter(adapter);
spinner2.setAdapter(adapter);
String str = "Item3";
for(int i=0; i < adapter.getCount(); i++) {
if(str.trim().equals(adapter.getItem(i).toString())){
spinner2.setText(adapter.getItem(i).toString());
break;
}
}
我将 MaterialBetterSpinner 库用于微调器,但无法设置到指定位置。
String[] LIST = {"Item1", "Item2", "Item3", "Item4", "Item5"};
MaterialBetterSpinner spinnerItem = (MaterialBetterSpinner) findViewById(R.id.spinnerItem);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, LIST);
String str = "Item3";
for(int i=0; i < adapter1.getCount(); i++) {
if(str.trim().equals(adapter1.getItem(i).toString())){
spinnerItem.setSelection(i);
break;
}
}
我得到以下异常
Caused by: java.lang.IndexOutOfBoundsException: setSpan (1 ... 1) ends beyond length 0
这来自 Android 开发者
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
创建适配器后,您只需调用 spinner.setAdapter(adapter)
而不是每个项目
编辑: 将特定项目设置为默认值
String string = 'my string';
int spinnerPosition = adapter.getPosition(string);
spinner.setSelection(spinnerPosition);
编辑 2: 由于问题 (https://github.com/Lesilva/BetterSpinner/issues/13) 也由 Jorge Casariego 指定,请使用 setText 但如果您知道字符串在微调器中,您可以仅使用
改进他的代码spinner.setText(string)
根据这个 issue 解决方案是使用 getText()
因此,您可以使用默认值来执行此操作
String[] LIST = {"Item1", "Item2", "Item3", "Item4", "Item5"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, LIST);
spinner1.setAdapter(adapter);
spinner2.setAdapter(adapter);
String str = "Item3";
for(int i=0; i < adapter.getCount(); i++) {
if(str.trim().equals(adapter.getItem(i).toString())){
spinner2.setText(adapter.getItem(i).toString());
break;
}
}