我创建了一个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