我在一个android项目上工作,我正在使用一个旋转器,它使用一个从数据库填充的数组适配器。
我不知道如何从列表中以编程方式设置所选项目。例如,如果在旋转器中有以下项目:
类别1 第二类 3级
当创建屏幕时,我如何通过编程使类别2成为所选项目。我在想它可能类似于c#的i.e. Spinner。SelectedText = "Category 2"但似乎没有任何方法类似于Android。
我在一个android项目上工作,我正在使用一个旋转器,它使用一个从数据库填充的数组适配器。
我不知道如何从列表中以编程方式设置所选项目。例如,如果在旋转器中有以下项目:
类别1 第二类 3级
当创建屏幕时,我如何通过编程使类别2成为所选项目。我在想它可能类似于c#的i.e. Spinner。SelectedText = "Category 2"但似乎没有任何方法类似于Android。
当前回答
是的,您可以通过在spinner的setSelection函数中传递所需spinner项的索引来实现这一点。例如:
spinnerObject.setSelection (INDEX_OF_CATEGORY)。
其他回答
这是我的工作。
spinner.setSelection(spinner_adapter.getPosition(selected_value)+1);
这招对我很管用:
mySpinner.post(new Runnable() {
@Override
public void run() {
mySpinner.setSelection(position);
spinnerAdapter.notifyDataSetChanged();
}
});
是的,您可以通过在spinner的setSelection函数中传递所需spinner项的索引来实现这一点。例如:
spinnerObject.setSelection (INDEX_OF_CATEGORY)。
这招对我很管用:
@Override
protected void onStart() {
super.onStart();
mySpinner.setSelection(position);
}
它类似于@sberezin的解决方案,但在onStart()中调用setSelection()。
在我的例子中,这段代码拯救了我:
public static void selectSpinnerItemByValue(Spinner spnr, long value) {
SpinnerAdapter adapter = spnr.getAdapter();
for (int position = 0; position < adapter.getCount(); position++) {
if(adapter.getItemId(position) == value) {
spnr.setSelection(position);
return;
}
}
}