我在一个android项目上工作,我正在使用一个旋转器,它使用一个从数据库填充的数组适配器。

我不知道如何从列表中以编程方式设置所选项目。例如,如果在旋转器中有以下项目:

类别1 第二类 3级

当创建屏幕时,我如何通过编程使类别2成为所选项目。我在想它可能类似于c#的i.e. Spinner。SelectedText = "Category 2"但似乎没有任何方法类似于Android。


当前回答

我有一个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;
    }
}

我认为这是一个真正的方法

其他回答

你可以为这种工作创建一个泛型方法就像我在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);
        }
    }
}

为什么不使用数据库中的值并将它们存储在数组列表中,然后使用:

yourSpinner.setSelection(yourArrayList.indexOf("Category 1"));

是的,您可以通过在spinner的setSelection函数中传递所需spinner项的索引来实现这一点。例如:

spinnerObject.setSelection (INDEX_OF_CATEGORY)。

这招对我很管用:

@Override
protected void onStart() {
    super.onStart();
    mySpinner.setSelection(position);
}

它类似于@sberezin的解决方案,但在onStart()中调用setSelection()。

这是我的工作。

 spinner.setSelection(spinner_adapter.getPosition(selected_value)+1);