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

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

类别1 第二类 3级

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


当前回答

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

其他回答

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

这是我正在使用的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)

在Kotlin中,我使用lambda找到了一个简单的解决方案:

spinnerObjec.post {spinnerObjec.setSelection(yourIndex)}
  for (int x = 0; x < spRaca.getAdapter().getCount(); x++) {
            if (spRaca.getItemIdAtPosition(x) == reprodutor.getId()) {
                spRaca.setSelection(x);
                break;
            }
        }