gpt4 book ai didi

ListView 上的 Android 查询 where 子句

转载 作者:行者123 更新时间:2023-11-29 22:08:14 26 4
gpt4 key购买 nike

我创建了一个带有 CursorAdapterListView,由我的数据库表填充。在我添加了一个 ContextMenu 之后,长按 ListView 所需的行从我的表中选择信息。

问题是:我无法收集 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));
}

我在数据库类中的查询:

public Cursor getRegistry2(long id) {
return (getReadableDatabase().query(
TabRegistry.TABLE_NAME,
TabRegistry.COLUMNS,
TabRegistry._ID + " = " + id,
null,
null,
null,
null,
null));
}

我 Activity 中 ContextMenu 的 ID:

 AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
id = getListAdapter().getItemId(info.position);

我在 Activity 类中的光标:

Cursor c3 = databaseHelper.getRegistry2(id);
if (c3 != null) {
c3.moveToFirst();
}

dbnumber = (c3.getString(c3.getColumnIndex(TabRegistry.NUMBER)));

我如何将 ListView 行的值分配给 dbnumber 字符串,这很奇怪?

编辑有效的代码,但重置 ListView 的 View ....

Cursor c3 = (Cursor) getListAdapter().getItem(info.position);
startManagingCursor(c3);
aaaaa = c3.getString(c3.getColumnIndex(TabRegistry.NUMBER));
c3.close();

最佳答案

AdapterView.AdapterContextMenuInfo 有一个名为 id 的字段,表示数据库中所选行的行 ID。您需要查询该 id 而不是代表列表中位置的 position 字段:

rowId = info.id;

然后在您的数据库中查询 rowId 以获取该项目的数据。

编辑:

您可能不想使用您添加的解决方案。您关闭了游标,因此不再有数据(这就是您必须重新启动 Activity 的原因,因为您可能仅在 onCreate 方法中查询数据库)。

我告诉过你当你长按(显示ContextMenu)列表中的不同行时,检查 info.id 是否返回不同的值,这意味着ContextMenu(可能)为不同的行选择不同的行 ID)。

我不知道是什么导致了你的问题(如果删除有效,我会说 Activity 中有一些东西),所以我做了一个小例子来说明你正在尝试做什么,这样你就可以看到这种类型的代码:

http://pastebin.com/Yri03S0T

关于ListView 上的 Android 查询 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com