我创建了一个简单的Spinner将其绑定到SimpleCursorAdapter
。我正在使用内容提供商的城镇列表填充SimpleCursorAdapter
。
当我去保存用户选择时,我打算将正在填充的行ID保存到我的SimpleCursorAdapter
。
我正在使用以下代码获取ID。
townSpinner.getSelectedItemId();
我无法弄清楚当我拉回保存的项目时如何最好地设置选择。
以下代码有效,但只按位置编号设置选择。
townSpinner.setSelection(2);
我应该创建一个循环来根据Id确定正确的位置值吗?
long cityId = Long.parseLong(cursor.getString(CityQuery.CITY_ID));
for (int i = 0; i < citySpinner.getCount(); i++) {
long itemIdAtPosition2 = citySpinner.getItemIdAtPosition(i);
if (itemIdAtPosition2 == cityId) {
citySpinner.setSelection(i);
break;
}
}
答案 0 :(得分:2)
我想你已经回答了自己的问题! 只需使用您发布的代码编写自己的setSelectionByItemId方法
答案 1 :(得分:0)
示例:
DB:
public Cursor getData() {
SQLiteDatabase db = getReadableDatabase();
String sql = "select ID _id, Name from MyTable order by Name ";
Cursor c = db.rawQuery(sql, null);
c.moveToFirst();
return c;
}
Activity:
Cursor myCursor = db.getData();
SimpleCursorAdapter adapter1 = new SimpleCursorAdapter(
this,
android.R.layout.simple_spinner_item,
myCursor,
new String[] { "Name" }, new int[] { android.R.id.text1 }, 0);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(adapter1);
for(int i = 0; i < adapter1.getCount(); i++)
{
if (adapter1.getItemId(i) == myID )
{
mySpinner.setSelection(i, false); //(false is optional)
break;
}
}
答案 2 :(得分:0)
Android Spinner按值设置选定项
微调器提供一种使用setSelection(int position)方法基于位置设置所选值的方法。现在,要基于某个值获取位置,您必须遍历微调器并获取位置。这是一个示例
mySpinner.setSelection(getIndex(mySpinner, myValue));
private int getIndex(Spinner spinner, String myString){
int index = 0;
for (int i=0;i<spinner.getCount();i++){
if (spinner.getItemAtPosition(i).equals(myString)){
index = i;
}
}
return index;
}
如果您的Spinner Adapter使用ArrayList,则可以使用它遍历并获取索引。另一种方法是遍历适配器条目
Spinner s = (Spinner) findViewById(R.id.spinner_id);
for(i=0; i < adapter.getCount(); i++) {
if(myString.trim().equals(adapter.getItem(i).toString())){
s.setSelection(i);
break;
}
}