Android:从游标填充的Spinner获取数据集ID

时间:2011-11-17 11:31:24

标签: android database cursor spinner

我正在使用微调器让用户在创建和更新对话框中选择数据库关系(1:n)。使用数据库游标填充微调器可以正常工作:

    //set up spinner
    Spinner spinner = (Spinner) dialog.findViewById(R.id.field_task_fkbudget);
    //set up cursor
    budgetsData = new TBTsqlHelperBudgets(this);        
SQLiteDatabase db = budgetsData.getReadableDatabase();
    Cursor c2 = db.query(TBTsqlHelperBudgets.TABLE,null,null,null,null,null,null);        
    c2.moveToFirst();
    // populate spiner
    SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c2, new String[] {TBTsqlHelperTasks.KEY_NAME}, new int[] {android.R.id.text1});
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter2);
    spinner.setSelection(0);

我现在的问题是保存对数据库的选择。我试着用:

    ... 
    caller.updateTask(task_id, field_name.getText().toString(), s.getSelectedItemPosition());
    ...

但是这给了我微调器内的数据集位置。我需要的是在微调器中选择的游标元素字段BaseColumns._ID的内容。

有没有比在数据库中使用字符串匹配执行另一个select更好的方法来接收它?

2 个答案:

答案 0 :(得分:0)

OnItemSelectedListener和方法

内设置Spinner
onItemSelected(AdapterView<?> parent,View view, int pos, long id)

您拥有所选项目的id,将此id保存在班级变量中

(比方说:long selectedId)然后在数据库中保存选择

caller.updateTask(task_id, field_name.getText().toString(), selectedId);

答案 1 :(得分:0)

我想我终于找到了一个很好的解决方案:

caller.updateTask(task_id, field_name.getText().toString(),s.getItemIdAtPosition(s.getSelectedItemPosition()));