Android 向数据库游标添加数据

Android 向数据库游标添加数据,android,Android,也许我走错了方向,但如果是这样,请纠正我。 情况是这样的:我有一个查询,它返回存储在数据库中的铃声的URI字符串 我正在尝试向这个光标添加一个带有振铃器“Title”的“column”(因为这可以在我的程序之外更改) 我可以成功地使用RingtoneManager获取标题,但我不知道如何将此“列”添加到光标数据中以供以后使用 以下是我到目前为止的情况: if (cursor != null) { cursor.moveToFirst(); do { S

也许我走错了方向,但如果是这样,请纠正我。 情况是这样的:我有一个查询,它返回存储在数据库中的铃声的URI字符串

我正在尝试向这个光标添加一个带有振铃器“Title”的“column”(因为这可以在我的程序之外更改)

我可以成功地使用
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等)。。你能举个例子吗?是的,在阅读你的后续问题时,我意识到我的答案是错误的。