Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Android中SQL查询中的游标适配器支持的微调器获取字符串值_Java_Android_Spinner_Simplecursoradapter - Fatal编程技术网

Java 从Android中SQL查询中的游标适配器支持的微调器获取字符串值

Java 从Android中SQL查询中的游标适配器支持的微调器获取字符串值,java,android,spinner,simplecursoradapter,Java,Android,Spinner,Simplecursoradapter,我在这里的代码是可怕的错误,我不知道你会如何正确地做到这一点。我有一个微调器,它是通过游标适配器从SQLite数据库查询填充的。我需要获取当前所选项目的文本(值)。我试过这个垃圾: ((Cursor)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition())).getString(prdSpn.getSelectedItemPosition()) 获取文本,但每次都会崩溃。正确的方法是什么?以下是一些可能相关的附加代码: /// qc

我在这里的代码是可怕的错误,我不知道你会如何正确地做到这一点。我有一个微调器,它是通过游标适配器从SQLite数据库查询填充的。我需要获取当前所选项目的文本(值)。我试过这个垃圾:

((Cursor)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition())).getString(prdSpn.getSelectedItemPosition())
获取文本,但每次都会崩溃。正确的方法是什么?以下是一些可能相关的附加代码:

/// qc defined above as a SimpleCursorAdapter
/////////setup product selection spinner from db
prdSpn = (Spinner)findViewById(R.id.prd_spn);
Cursor prdCur = null;
try {
    prdCur = mDb.query(smsDbSchema.ProductSchema.TABLE_NAME, null, null, null, null, null, null);
} catch(Exception e) {
    Log.e("smsdb", e.toString());
}
prdCur.moveToFirst();
startManagingCursor(prdCur);
qc = new SimpleCursorAdapter(
    this,
    android.R.layout.simple_spinner_item,
    prdCur,
    new String[] {smsDbSchema.ProductSchema.COLUMN_NAME},
    new int[] {android.R.id.text1}
);
qc.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
prdSpn.setAdapter(qc);
((光标)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition()).getString(prdSpn.getSelectedItemPosition())


我不清楚您为什么要将
getSelectedItemPosition()
传递到
getString()
。您不应该传递包含所需数据的列的列号吗?此列不是与微调器中选择的行无关吗?

代码类似于以下代码对我的作用

Cursor theCursor = qc.getCursor();
String theString = theCursor.getString(theCursor.getColumnIndex(<your column name here>));

如果列id未知,但列名未知,则标准方法是在游标上使用getColumnIndex()。我最终实现了类似的功能。我在你之前的帖子下面编辑了这条评论,以显示具体的实现。感谢您的回复。@moonlightcheese:很高兴能得到一些帮助。这对thanx(Mstersquonk和@moonlightcheese)真的很有帮助
Cursor theCursor = (Cursor)prdSpn.getSelectedItem();
Log.e("spnERRtest", "Item: " + theCursor.getString(theCursor.getColumnIndex(smsDbSchema.ProductSchema.COLUMN_NAME)));
//theCursor.getString(theCursor.getColumnIndex(smsDbSchema.ProductSchema.COLUMN_NAME)).contains("CAR")