我在一个android项目上工作,我正在使用一个旋转器,它使用一个从数据库填充的数组适配器。
我不知道如何从列表中以编程方式设置所选项目。例如,如果在旋转器中有以下项目:
类别1 第二类 3级
当创建屏幕时,我如何通过编程使类别2成为所选项目。我在想它可能类似于c#的i.e. Spinner。SelectedText = "Category 2"但似乎没有任何方法类似于Android。
我在一个android项目上工作,我正在使用一个旋转器,它使用一个从数据库填充的数组适配器。
我不知道如何从列表中以编程方式设置所选项目。例如,如果在旋转器中有以下项目:
类别1 第二类 3级
当创建屏幕时,我如何通过编程使类别2成为所选项目。我在想它可能类似于c#的i.e. Spinner。SelectedText = "Category 2"但似乎没有任何方法类似于Android。
当前回答
最优解为:
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"));
其他回答
为什么不使用数据库中的值并将它们存储在数组列表中,然后使用:
yourSpinner.setSelection(yourArrayList.indexOf("Category 1"));
最优解为:
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"));
这是我的工作。
spinner.setSelection(spinner_adapter.getPosition(selected_value)+1);
大多数时候spinner.setSelection(i);//i是0到(size-1)适配器的大小 是行不通的。如果你调用spinner.setSelection(i);
这取决于你的逻辑。
如果视图是完全加载的,你想从接口调用它,我建议你调用
spinner.setAdapter(spinner_no_of_hospitals.getAdapter());
spinner.setSelection(i); // i is 0 or within adapter size
或者,如果您想在活动/片段生命周期之间进行更改,请像这样调用
spinner.post(new Runnable() {
@Override public void run() {
spinner.setSelection(i);
}
});
我知道已经回答了,但简单的代码选择一个项目,非常简单:
spGenre.setSelection( ( (ArrayAdapter) spGenre.getAdapter()).getPosition(client.getGenre()) );