【发布时间】:2015-07-23 21:31:11
【问题描述】:
我通过本地数据库填充Spinner 来创建它。
在我的 DBHelper 中,我使用了 List<String>
public List<String> getServices(){
List<String> labels = new ArrayList<String>();
// Select All Query
String selectQuery = "SELECT * FROM " + TBL_SERVICES;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
labels.add(cursor.getString(1));
} while (cursor.moveToNext());
}
// closing connection
cursor.close();
db.close();
// returning lables
return labels;
}
在我的片段中,我使用它来加载我的微调器
private void loadSpinnerData() {
initialazeDatabase();
// Spinner Drop down elements
List<String> lables = dbHelper.getServices();
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, lables);
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spn_services.setAdapter(dataAdapter);
}
然后我试图获取它的 ID,但我只从数据库中获取位置而不是 ID
spn_services.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
Log.e(TAG, "My service id is " + pos + "My Id is "+ id);
}
id 只是返回与 pos 相同的值。如何获取从数据库中保存的 rowID?
**
我的服务表中只有 2 列其 id 和 services_name。
我调试了一下,看到了这个
它只在数据库中获取我的 String 而不是我的 rowID,因为我的数据库看起来像这样
【问题讨论】:
-
您能发布您的数据库架构吗?了解 TBL_SERVICES 表中的列是有帮助的。
-
@EJK 我的服务表 id 和 services_name 中只有两列
-
您是否确认您的 getServices() 方法返回的 List
包含预期值? -
通过检查我的模拟器显示的内容,它会显示我所有的 services_name。 @EJK
-
好的,但这不是我要问的。我在询问数组的内容。你能在调试器中查看数组吗?如果没有,您至少可以输入一些 Log 语句来将数组的内容转储到 LogCat 吗?这将有助于确定问题是否出在数据检索中。