【问题标题】:Android: Get Dataset ID from cursor populated SpinnerAndroid:从光标填充的 Spinner 获取数据集 ID
【发布时间】:2011-12-31 06:28:40
【问题描述】:

我正在使用微调器让用户在创建和更新对话框中选择数据库关系 (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 的内容。

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

【问题讨论】:

    标签: android database cursor spinner


    【解决方案1】:

    Spinner 和方法内部设置OnItemSelectedListener

    onItemSelected(AdapterView<?> parent,View view, int pos, long id)
    

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

    (可以说:long selectedId)然后在数据库中保存选择时

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

    【讨论】:

      【解决方案2】:

      我想我终于找到了一个不错的解决方案:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多