2011-02-07 7 views
6

mój kod jest okropnie zły i nie jestem pewien, jak poprawnie to zrobić. Mam Spinner, który jest wypełniany z kwerendy bazy danych SQLite za pośrednictwem CursorAdapter. Potrzebuję uzyskać tekst (wartość) z aktualnie wybranego elementu. próbowałem tego śmiecia:Uzyskiwanie wartości ciągu od Spinnera wspieranego przez CursorAdapter z zapytania SQL w Androidzie

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

, aby uzyskać tekst, ale za każdym razem ulega awarii. jaki jest właściwy sposób na zrobienie tego? oto niektóre dodatkowy kod, które mogą być istotne.

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

Odpowiedz

7

kod podobny do następujących prac dla mnie ...

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

EDIT przez moonlightcheese:

realizacja:

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

Skończyło się na implementowaniu czegoś takiego. Zmodyfikowałem ten komentarz pod Twoim wcześniejszym wpisem, aby pokazać dokładną implementację. Dzięki za odpowiedzi. – moonlightcheese

+0

@moonlightcheese: Cieszę się, że mogłem pomóc. – Squonk

+0

To było naprawdę pomocne thanx (@MisterSquonk i @moonlightcheese) –

0

((Kursor) prdSpn.getItemAtPosition (prdSpn.getSelectedItemPosition())) getString (prdSpn.getSelectedItemPosition())

I m niejasne, dlaczego przechodzisz getSelectedItemPosition() do getString(). Nie powinieneś podawać numeru kolumny kolumny, która ma żądane dane? Czy ta kolumna nie ma związku z rzędem wybranym w przędzarce?

+0

i jak byłoby uzyskać odpowiednią ColumnID daną aktualnie wybrany pozycja przedmiotu. – moonlightcheese

+0

Jeśli identyfikator kolumny nie jest znany, ale nazwa kolumny jest, standardową metodą jest użycie getColumnIndex() na kursorze. –

Powiązane problemy