Android - как удалить элемент из курсора? - PullRequest
3 голосов
/ 17 июля 2011

Допустим, я сделал следующий курсор для получения журнала вызовов кого-либо:

String[] strFields = {
    android.provider.CallLog.Calls.NUMBER, 
    android.provider.CallLog.Calls.TYPE,
    android.provider.CallLog.Calls.CACHED_NAME,
    android.provider.CallLog.Calls.CACHED_NUMBER_TYPE
    };

String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 

Cursor mCallCursor = getContentResolver().query(
        android.provider.CallLog.Calls.CONTENT_URI,
        strFields,
        null,
        null,
        strOrder
        );

Теперь, как бы я удалил i-й элемент в этом курсоре?Это также может быть курсор для получения списка музыки и т. Д. Итак, я должен спросить - это вообще возможно?Для некоторых курсоров я могу понять, что сторонним приложениям не разрешено удалять из.

Спасибо.

Ответы [ 2 ]

8 голосов
/ 17 июля 2011

Извините, приятель, вы не можете удалить из курсора.

Вы должны использовать ContentResolver или какой-либо SQL-вызов.

5 голосов
/ 10 августа 2013

Можно подшутить с MatrixCursor. С помощью этой стратегии вы копируете курсор и пропускаете одну строку, которую хотите исключить. Это, очевидно, не очень эффективно для больших курсоров, так как вы сохраните весь набор данных в памяти.

Вы также должны повторить массив String имен столбцов в конструкторе MatrixCursor. Вы должны сохранить это как константу.

   //TODO: put the value you want to exclude
   String exclueRef = "Some id to exclude for the new";
   MatrixCursor newCursor = new MatrixCursor(new String[] {"column A", "column B");
         if (cursor.moveToFirst()) {
            do {
                // skip the copy of this one .... 
                if (cursor.getString(0).equals(exclueRef))
                    continue;
                newCursor.addRow(new Object[]{cursor.getString(0), cursor.getString(1)});
            } while (cursor.moveToNext());
        }

Я постоянно сражаюсь с этим; пытаясь создавать свои приложения только с помощью курсоров и поставщиков контента, стараясь как можно дольше избегать сопоставления объектов. Вы должны увидеть некоторые из моих ViewBinders ...: -)

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