我在一个android项目上工作,我正在使用一个旋转器,它使用一个从数据库填充的数组适配器。
我不知道如何从列表中以编程方式设置所选项目。例如,如果在旋转器中有以下项目:
类别1 第二类 3级
当创建屏幕时,我如何通过编程使类别2成为所选项目。我在想它可能类似于c#的i.e. Spinner。SelectedText = "Category 2"但似乎没有任何方法类似于Android。
我在一个android项目上工作,我正在使用一个旋转器,它使用一个从数据库填充的数组适配器。
我不知道如何从列表中以编程方式设置所选项目。例如,如果在旋转器中有以下项目:
类别1 第二类 3级
当创建屏幕时,我如何通过编程使类别2成为所选项目。我在想它可能类似于c#的i.e. Spinner。SelectedText = "Category 2"但似乎没有任何方法类似于Android。
当前回答
这是我正在使用的Kotlin扩展:
fun Spinner.setItem(list: Array<CharSequence>, value: String) {
val index = list.indexOf(value)
this.post { this.setSelection(index) }
}
用法:
spinnerPressure.setItem(resources.getTextArray(R.array.array_pressure), pressureUnit)
其他回答
你可以为这种工作创建一个泛型方法就像我在UtilityClass中做的那样
public void SetSpinnerSelection(Spinner spinner,String[] array,String text) {
for(int i=0;i<array.length;i++) {
if(array[i].equals(text)) {
spinner.setSelection(i);
}
}
}
我有一个SimpleCursorAdapter,所以我必须复制在这篇文章中使用响应的数据。所以,我建议你试试这个方法:
for (int i = 0; i < spinnerRegion.getAdapter().getCount(); i++) {
if (spinnerRegion.getItemIdAtPosition(i) == Integer
.valueOf(signal.getInt(signal
.getColumnIndexOrThrow("id_region")))) {
spinnerRegion.setSelection(i);
break;
}
}
我认为这是一个真正的方法
是的,您可以通过在spinner的setSelection函数中传递所需spinner项的索引来实现这一点。例如:
spinnerObject.setSelection (INDEX_OF_CATEGORY)。
这招对我很管用:
mySpinner.post(new Runnable() {
@Override
public void run() {
mySpinner.setSelection(position);
spinnerAdapter.notifyDataSetChanged();
}
});
最优解为:
public String[] items= new String[]{"item1","item2","item3"};
// here you can use array or list
ArrayAdapter adapter= new ArrayAdapter(Your_Context, R.layout.support_simple_spinner_dropdown_item, items);
final Spinner itemsSpinner= (Spinner) findViewById(R.id.itemSpinner);
itemsSpinner.setAdapter(adapter);
若要自动获取该项的位置,请添加以下语句
itemsSpinner.setSelection(itemsSpinner.getPosition("item2"));