我在一个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中使用的:
spinner.setSelection(resources.getStringArray(R.array.choices).indexOf("Choice 1"))
其他回答
这些答案都没有给我答案,只有这个:
mySpinner.post(new Runnable() {
@Override
public void run() {
mySpinner.setSelection(position);
}
});
这在本页其他地方的评论中有说明,但我认为把它拉出来作为一个答案是有用的:
当使用适配器时,我发现spinnerObject.setSelection(INDEX_OF_CATEGORY2)需要发生在setAdapter调用之后;否则,第一项总是初始选择。
// spinner setup...
spinnerObject.setAdapter(myAdapter);
spinnerObject.setSelection(INDEX_OF_CATEGORY2);
这可以通过检查setAdapter的AbsSpinner代码来确认。
我有一个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) view.findViewById(R.id.mobile)).setSelection(spinnerContactPersonDesignationAdapter.getPosition(schoolContact.get(i).getCONT_DESIGNATION()));
我知道已经回答了,但简单的代码选择一个项目,非常简单:
spGenre.setSelection( ( (ArrayAdapter) spGenre.getAdapter()).getPosition(client.getGenre()) );