Управление 6000+ контактами из базы данных - PullRequest
0 голосов
/ 08 января 2011

У меня есть база данных с более чем 6000 записей.Я использую этот пример http://eshyu.wordpress.com/2010/08/15/cursoradapter-with-alphabet-indexed-section-headers/ для отображения содержимого.Но сейчас деятельность не может справиться с этим.Я получаю диалог ANR каждый раз.Как мне эффективно справиться с этим обстоятельством?

1 Ответ

1 голос
/ 09 января 2011

Нет смысла проходить каждую запись и спрашивать индексатора, к какому разделу принадлежит эта запись.В вашем случае индексатор может выполнять 6000 бинарных поисков.Затем поместите этот результат в карту, которая будет иметь менее 30 записей и выполнит много перезаписей.

Также не стоит злоупотреблять картой sectionToPosition для создания начального положения раздела.Вы либо готовите таблицу со статистикой, которая будет лучшим способом обработки такого большого количества данных.

B.Вы можете использовать базу данных, чтобы подсчитать количество записей для каждого раздела и создать свой собственный раздел, начиная с карты.

SELECT UPPER(SUBSTR(LTRIM(side_a), 1, 1)), COUNT(*) FROM cards GROUP BY 1 ORDER BY 1 ASC;

...