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

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

类别1 第二类 3级

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


当前回答

这招对我很管用:

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

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

其他回答

最优解为:

    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"));

使用以下方法: spinnerObject.setSelection (INDEX_OF_CATEGORY2)。

public static void selectSpinnerItemByValue(Spinner spnr, long value) {
    SimpleCursorAdapter adapter = (SimpleCursorAdapter) spnr.getAdapter();
    for (int position = 0; position < adapter.getCount(); position++) {
        if(adapter.getItemId(position) == value) {
            spnr.setSelection(position);
            return;
        }
    }
}

你可以使用上面的方法:

selectSpinnerItemByValue(spinnerObject, desiredValue);

&当然你也可以直接按索引选择

spinnerObject.setSelection(index);

如果你有一个联系人列表,你可以这样做:

((Spinner) view.findViewById(R.id.mobile)).setSelection(spinnerContactPersonDesignationAdapter.getPosition(schoolContact.get(i).getCONT_DESIGNATION()));

这是我在Kotlin中使用的:

spinner.setSelection(resources.getStringArray(R.array.choices).indexOf("Choice 1"))