我創建了一個ListView
,其中CursorAdapter
由我的db表填充。在我添加一個ContextMenu
後,點擊所需的ListView
行從我的表格中選擇信息。Android查詢ListView的where子句
問題是:我無法收集該單行ListView
的信息,每行都給出了相同的結果。我想我在查詢時做錯了什麼。
onCreate
:
private void createTabRegistry(SQLiteDatabase db)
{
String sql = "CREATE TABLE {0} ({1} INTEGER PRIMARY KEY AUTOINCREMENT, {2} TEXT,{3} INTEGER,{4} TEXT,{5} TEXT,{6} TEXT, {7} TEXT);";
db.execSQL(MessageFormat.format(sql, TabRegistry.TABLE_NAME, TabRegistry._ID,TabRegistry.TYPE, TabRegistry.DATE, TabRegistry.STATUS, TabRegistry.NUMBER, TabRegistry.MESSAGE, TabRegistry.OTHER));
}
我的DB類查詢:
AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
id = getListAdapter().getItemId(info.position);
我的光標在活動類:
public Cursor getRegistry2(long id) {
return (getReadableDatabase().query(
TabRegistry.TABLE_NAME,
TabRegistry.COLUMNS,
TabRegistry._ID + " = " + id,
null,
null,
null,
null,
null));
}
在我的活動ContextMenu
ID
Cursor c3 = databaseHelper.getRegistry2(id);
if (c3 != null) {
c3.moveToFirst();
}
dbnumber = (c3.getString(c3.getColumnIndex(TabRegistry.NUMBER)));
如何分配給dbnumber
字符串ListView
這一行的值是否值得?
編輯代碼....
Cursor c3 = (Cursor) getListAdapter().getItem(info.position);
startManagingCursor(c3);
aaaaa = c3.getString(c3.getColumnIndex(TabRegistry.NUMBER));
c3.close();
感謝您的回答....但我還沒有解決....我一直在列表視圖中的所有行相同的值,我應該改變嗎? – Tony 2012-04-20 18:17:04
@Tony您是否使用自定義'CursorAdapter'或android'SDK'標準的?你總是從列表中獲得哪個值(0,1,2..etc?),哪個位置? – Luksprog 2012-04-20 18:18:25
我使用了一個自定義的'CursorAdapter' ...並且我總是和我的listview的第一行一樣的結果...我認爲這是因爲'c3。moveToFirst();' – Tony 2012-04-20 18:29:39