2015-06-19 2 views
0

Я пишу примечательное приложение для Android, и у меня есть RecyclerView для отображения сетки всех заметок. Каждая нота имеет соответствующий класс «Примечание».Android - Загрузка нескольких текстовых файлов в RecyclerView

Класс примечание знает/имеет:

  • Имя файла (Заметки название)
  • Файл путь для заметки
  • Способ загрузки, который считывает и возвращает текст внутри файла

Recyclerview считывает из ArrayList примечания. Список заполняется проверкой файлов в каталоге заметок приложения, и для каждого файла создается объект Note. Я пытаюсь найти лучший способ загрузить текст в recyclerview, который отображает предварительный просмотр заметок. Мне интересно, лучший ли это, или наименее глупый способ сделать это. Пути я могу думать делать этого:

  • нагрузки содержание каждой ноты на один раз во время первоначального сканирования и сохранить его в виде строки в классе ноты в памяти, недостаток является очень высоким использованием оперативной памяти с многими нот и текст.
  • Загрузите текст заметки в Recanerview's onBindViewHolder, но я волнуюсь, если пользователь прокручивает заметки очень быстро, а ViewHolder и его заметка не связаны до того, как текст будет загружен, могут быть возможные проблемы здесь ,
  • Загрузите текст каждой заметки в поток, увеличив производительность, но такую ​​же проблему, как указано выше.

Есть ли лучший способ сделать это, или рекомендованный/стандартный способ обработки большого количества загружаемых файлов динамически в recyclerview?

ответ

0

Начните с первого, затем оптимизируйте по мере необходимости. Если theyre просто текстовые файлы, они, вероятно, не займет много памяти. Если вы обнаружите, что они занимают слишком много памяти или слишком долго загружаются, вы можете посмотреть на стратегии, чтобы исправить это, но не тратьте время на оптимизацию чего-либо, прежде чем знаете свою проблему.

+0

Есть более старые устройства Android или бюджетные устройства, у которых есть только 100-200mb RAM, поэтому моя проблема здесь. – Polaric

0

Как вы устранили проблему?

Я также делаю такой же вид APP, я считаю, что лучшим вариантом является второй (загрузка содержимого file на bindViewHolder) в async-maner (например, с использованием asynctask), это та же самая ОСНОВНАЯ идеология загрузчиков изображений, таких как Picasso или Glide, вы называете их Bind ViewHolder.

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

Смежные вопросы