Pen*_*m10 283 java android adapter spinner
我有一个更新视图,我需要为Spinner预先选择存储在数据库中的值.
我记得这样的事情,但Adapter没有indexOf办法,所以我被困住了.
void setSpinner(String value)
{
int pos = getSpinnerField().getAdapter().indexOf(value);
getSpinnerField().setSelection(pos);
}
Run Code Online (Sandbox Code Playgroud)
小智 620
假设你Spinner的名字被命名mSpinner,它包含了一个选择:"一些价值".
要查找和比较Spinner中"某些值"的位置,请使用以下命令:
String compareValue = "some value";
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.select_state, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
if (compareValue != null) {
int spinnerPosition = adapter.getPosition(compareValue);
mSpinner.setSelection(spinnerPosition);
}
Run Code Online (Sandbox Code Playgroud)
Akh*_*ain 133
一种基于值设置微调器的简单方法是
mySpinner.setSelection(getIndex(mySpinner, myValue));
//private method of your class
private int getIndex(Spinner spinner, String myString){
for (int i=0;i<spinner.getCount();i++){
if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(myString)){
return i;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
复杂代码的方法已经存在,这只是更简单.
Mar*_*k B 34
我保留了Spinners中所有项目的单独ArrayList.这样我可以在ArrayList上执行indexOf,然后使用该值在Spinner中设置选择.
Art*_*are 29
根据Merrill的回答,我想出了这个单行解决方案......它不是很漂亮,但是你可以责怪那些维护代码Spinner的人忽略了为此做的事情.
mySpinner.setSelection(((ArrayAdapter<String>)mySpinner.getAdapter()).getPosition(myString));
Run Code Online (Sandbox Code Playgroud)
你会得到一个关于如何ArrayAdapter<String>取消选中演员阵容的警告......真的,你可以ArrayAdapter像Merrill那样使用,但这只是交换另一个警告.
itz*_*har 13
如果你使用字符串数组这是最好的方法:
int selectionPosition= adapter.getPosition("YOUR_VALUE");
spinner.setSelection(selectionPosition);
Run Code Online (Sandbox Code Playgroud)
Prv*_*rvN 10
你也可以用它,
String[] baths = getResources().getStringArray(R.array.array_baths);
mSpnBaths.setSelection(Arrays.asList(baths).indexOf(value_here));
Run Code Online (Sandbox Code Playgroud)
如果您需要在任何旧适配器上使用indexOf方法(并且您不知道底层实现),那么您可以使用:
private int indexOf(final Adapter adapter, Object value)
{
for (int index = 0, count = adapter.getCount(); index < count; ++index)
{
if (adapter.getItem(index).equals(value))
{
return index;
}
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
根据Merrill的回答,这里是如何处理CursorAdapter
CursorAdapter myAdapter = (CursorAdapter) spinner_listino.getAdapter(); //cast
for(int i = 0; i < myAdapter.getCount(); i++)
{
if (myAdapter.getItemId(i) == ordine.getListino() )
{
this.spinner_listino.setSelection(i);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
使用以下行选择使用值:
mSpinner.setSelection(yourList.indexOf("value"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
397446 次 |
| 最近记录: |