получение значения String из Spinner, поддерживаемого CursorAdapter из SQL-запроса в Android - PullRequest
6 голосов
/ 08 февраля 2011

мой код здесь ужасно неправильный, и я не уверен, как бы вы правильно сделали это.У меня есть Spinner, который заполняется из запроса к базе данных SQLite через CursorAdapter.мне нужно получить текст (значение) выбранного в данный момент элемента.я попробовал этот мусор:

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

Ответы [ 2 ]

7 голосов
/ 08 февраля 2011

Код, подобный следующему, работает для меня ...

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

РЕДАКТИРОВАТЬ от 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")
0 голосов
/ 08 февраля 2011

((Cursor) prdSpn.getItemAtPosition (prdSpn.getSelectedItemPosition ())). GetString (prdSpn.getSelectedItemPosition ())

Мне неясно, почему вы передаете getSelectedItemPosition() на getString(). Разве вы не должны передавать номер столбца, который содержит данные, которые вы хотите? Разве этот столбец не связан со строкой, выбранной в счетчике?

...