Добавление данных в курсор базы данных - PullRequest
3 голосов
/ 10 января 2010

Может быть, я поступаю неправильно, но если это так, пожалуйста, поправьте меня. Вот ситуация: у меня есть запрос, который возвращает строки URI для мелодий звонка, хранящихся в базе данных.

Я пытаюсь добавить «столбец» к этому курсору с помощью звонка «Заголовок» (поскольку это может измениться вне моей программы).

Я могу успешно использовать 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());   
}

Ответы [ 3 ]

4 голосов
/ 10 января 2010

Вы не можете изменить существующий Cursor таким образом. Вам нужно создать Cursor с данными, которые вы ищете в самом начале.

Скорее всего, вам не нужно изменять Cursor, а то, что использует Cursor, должно быть умнее. Например, если ваша проблема в том, что вы не можете использовать вычисляемый столбец в SimpleCursorAdapter, вам нужно переключиться на CursorAdapter и переопределить bindView(), чтобы получить нужные вам смарты.

1 голос
/ 07 ноября 2014

Я еще не пробовал (обновлю здесь, когда это сделаю), но, возможно, будут работать следующие шаги:

Для аргументов давайте назовем оригинальный курсор baseCursor

  1. Используйте MatrixCursor для создания нового столбца, который вы хотите добавить (назовем его newColumnCursor)
  2. Затем создайте Cursor [] с baseCursor и newColumnCursor в качестве элементов.
  3. Передать этот массив в MergeCursor .
0 голосов
/ 10 января 2010

пожалуйста, посмотрите на эту тему:

Запись в курсор:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...