如何使用从微调器中选择的项目

How to use item selected from spinner

我有一个旋转器。我用数据库 table 中的(一列)数据填充它。现在,当用户 select 来自微调器的项目时。我想要数据库中的一个函数,它 returns 对应 selected 项的主键。在我的 main activity 中,主键应该存储在一个变量中。我该怎么做。

这是我在主程序中的代码 activity:

if(spinner.getSelectedItem() != null){
    spinner_text = (String) spinner.getSelectedItem();
    try {
        substation_number = myDB.spinnerResult(spinner_text);
    } catch (NumberFormatException e) {
        Toast.makeText(getApplicationContext(), "Please select an item", Toast.LENGTH_SHORT).show();
    }
}

这是我在数据库中的函数:

public int spinnerResult(String item_name){
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("Select substationNo from " + TABLE_NAME + " where item_name = ?", new String[]{item_name});
    return Integer.parseInt(String.valueOf(cursor));
}

您通过 rawQuery() 获得的游标应该 return 最多 1 行(如果 item_name 在 table 中是唯一的)和 1 列。
如果你传递的item_name存在于table中,你必须检查moveToFirst(),然后从游标中提取substationNo的值:

public int spinnerResult(String item_name){
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery("Select substationNo from " + TABLE_NAME + " where item_name = ?", new String[]{item_name});
    int result = 0; // you may change this
    if (cursor.moveToFirst()) result = cursor.getInt(0);
    cursor.close();
    db.close();
    return result;
}

如果您传递的 item_name 不存在于 table 函数 returns 0 中,您可以根据需要更改为 -1您可以检查它以验证是否找到 item_name