Выберите первые n строк в contentProvider - PullRequest
7 голосов
/ 08 апреля 2011

У меня есть этот выбор:

 final Cursor cursorConversations = getContentResolver().query(
        Uri.parse("content://gmail-ls/conversations/" + Uri.encode(mailAddress)),
        null, null, null, BaseColumns._ID + " DESC");

 ContentQueryMap mQueryMap 
        = new ContentQueryMap(cursorConversations, BaseColumns._ID, true, null);

С помощью ContentQueyMap я могу кэшировать данные курсора и повторять их также с закрытым курсором (он нужен мне для повышения производительности).

ТеперьЯ хочу, чтобы выбор Corsor извлекал только первые пятьдесят строк.Решение зацикливания 50 раз в mQueryMap.getRows().entrySet() неверно: я не хочу, чтобы mQueryMap получал все строки курсора, а только первые пятьдесят.

Есть идеи?Существует ли предложение where для получения только первых n строк?

Ответы [ 2 ]

14 голосов
/ 07 сентября 2011

Вы могли бы сделать

final Cursor cursorConversations = getContentResolver().query(
    Uri.parse("content://gmail-ls/conversations/" + Uri.encode(mailAddress)),
    null, null, null, BaseColumns._ID + " DESC " + " LIMIT 5");

"LIMIT x" после вашей сортировки.

Приветствия

0 голосов
/ 08 апреля 2011

SELECT * FROM Table_Name LIMIT 5;

Это действительно для sqlite. Попробуйте добавить «LIMIT 5» к предложению where. (Я не пробовал)

...