2011-02-07 15 views
6

mi código aquí es terriblemente incorrecto, y no estoy seguro de cómo lo haría correctamente. Tengo un Spinner que se rellena desde una consulta de base de datos SQLite a través de un CursorAdapter. Necesito obtener el texto (valor) del elemento seleccionado actualmente. Probé esta basura:obteniendo el valor de cadena de un Spinner respaldado por CursorAdapter desde una consulta SQL en Android

((Cursor)prdSpn.getItemAtPosition(prdSpn.getSelectedItemPosition())).getString(prdSpn.getSelectedItemPosition()) 

para obtener el texto, pero se bloquea cada vez. ¿Cuál es la forma correcta de hacer esto? aquí hay algo de código adicional que pueda ser relevante:.

/// 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); 

Respuesta

7

Código similares a los siguientes trabajos para mí ...

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

EDITAR por moonlightcheese:

aplicación:

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") 
+2

Terminé implementando algo como esto. He editado este comentario debajo de su publicación anterior para mostrar la implementación exacta. Gracias por la respuesta. – moonlightcheese

+0

@moonlightcheese: Me alegro de haber sido de ayuda. – Squonk

+0

Fue realmente útil gracias (@MisterSquonk y @moonlightcheese) –

0

((Cursor) prdSpn.getItemAtPosition (prdSpn.getSelectedItemPosition())) getString (prdSpn.getSelectedItemPosition())

I' No estoy seguro de por qué está pasando getSelectedItemPosition() a getString(). ¿No debería pasar el número de columna de la columna que tiene los datos que desea? ¿Esta columna no está relacionada con la fila que se seleccionó en la ruleta?

+0

y ¿Cómo puedo obtener el ColumnID apropiado dado el seleccionado actualmente posición del artículo – moonlightcheese

+0

Si no se conoce el ID de la columna, pero sí el nombre de la columna, el método estándar es usar getColumnIndex() en el cursor. –

Cuestiones relacionadas