Android 向数据库游标添加数据
也许我走错了方向,但如果是这样,请纠正我。 情况是这样的:我有一个查询,它返回存储在数据库中的铃声的URI字符串 我正在尝试向这个光标添加一个带有振铃器“Title”的“column”(因为这可以在我的程序之外更改) 我可以成功地使用Android 向数据库游标添加数据,android,Android,也许我走错了方向,但如果是这样,请纠正我。 情况是这样的:我有一个查询,它返回存储在数据库中的铃声的URI字符串 我正在尝试向这个光标添加一个带有振铃器“Title”的“column”(因为这可以在我的程序之外更改) 我可以成功地使用RingtoneManager获取标题,但我不知道如何将此“列”添加到光标数据中以供以后使用 以下是我到目前为止的情况: if (cursor != null) { cursor.moveToFirst(); do { S
RingtoneManager
获取标题,但我不知道如何将此“列”添加到光标数据中以供以后使用
以下是我到目前为止的情况:
if (cursor != null) {
cursor.moveToFirst();
do {
String ringerTitle = getRingerTitle(cursor.getString(cursor.getColumnIndex(PoolDbAdapter.KEY_RINGER)));
// How can I add ringerTitle to a new column here?
} while (cursor.moveToNext());
}
您不能以这种方式修改现有的
光标。您需要使用开始时查找的数据创建光标
不过,更可能的情况是,您不需要修改光标
,而是使用光标的任何东西都必须更智能。例如,如果您的问题是无法在SimpleCursorAdapter
中使用计算列,则需要切换到CursorAdapter
并覆盖bindView()
,以获得所需的智能。请查看此线程:
我还没有尝试过它(我会在这里更新,当我尝试的时候),但是,也许下面的步骤会起作用:
为了参数起见,让我们调用原始游标baseCursor
使用创建要添加的新列(称为newColumnCursor)
然后创建一个游标[],其中baseCursor和newColumnCursor作为元素
将该数组传递给
您的光标从哪里来?您能显示查询吗?光标来自DB查询并返回与铃声相关的URI,例如“content://media/audio/3“不幸的是,这与我以前扩展的SimpleCursorAdapter遇到的问题相同。我无法控制每行多次调用bindView(或我以前的方式getView)的事实,这会导致在RingtoneManager中多次查询同一数据时损失大量时间。我只想查询一次。。是否还有其他方法无法映射值?请通过setTag()缓存行中的值。在我的一本书的免费摘录中,您可以使用与我建议的缓存findViewById()查找相同的技术:我似乎无法找到setTag和getTag如何与特定行关联(仅布局、ID等)。。你能举个例子吗?是的,在阅读你的后续问题时,我意识到我的答案是错误的。