Загрузка большого количества текста (spannablestring) в текстовое представление Android занимает более 200 мс?

В настоящее время я разрабатываю Библию на Android, основанную на Paragraph, поэтому ListView не будет работать. Я реализовал ViewPager, используя фрагменты для каждой новой загружаемой главы. У меня проблема в том, что когда я устанавливаю текст TextView (mytextview.settext()), для отображения одной главы требуется более 200 мс. Обратите внимание, что текст, который я загружаю в TextView, представляет собой SpannableString с данными для красных букв, стихов и т. д. Для прокрутки TextView инкапсулируется в ScrollView для плавной прокрутки. Любые идеи о том, как реализовать систему ленивой загрузки в TextView или как ускорить процесс отображения текста? Любые ответы будут оценены!


person Seth    schedule 03.02.2015    source источник


Ответы (1)


Хотя вы сказали, что это не сработает, я бы предложил использовать ListView с пользовательским Adapter (или RecyclerView для последней версии API) вместо одного TextView. ListView с пользовательским Adapter будет более эффективным способом управления тоннами текста, если вы будете следовать шаблону «ViewHolder» в своем Adapter. Каждый абзац в вашей главе может быть отдельным элементом списка, который будет перерабатываться, когда пользователь прокручивает абзац за пределами экрана. В Интернете есть множество руководств по пользовательским ListView Adapters в Android, поэтому я не буду повторять их здесь; тем не менее, я надеюсь, что этот пост может указать вам правильное направление.

Удачи и счастливого кодирования!

person John P.    schedule 04.02.2015
comment
Не все абзацы являются стихами. Я мог бы попробовать то, что вы предложили выше, так как это явно был бы самый быстрый вариант. Спасибо за ваш вдумчивый ответ! - person Seth; 04.02.2015
comment
Нет проблем, Сет! Я фактически использовал этот метод в одном из своих приложений. Если вам нужен рабочий пример, посмотрите мой адаптер: github.com/JohnPersano/CrimeTalk-Reader/blob/master/app/src/ И фрагмент, который его использует: github.com/JohnPersano/CrimeTalk -Reader/blob/master/app/src/ Примечание. Мне нужно загрузить информацию с веб-страницы, чтобы получить данные во фрагменте, поэтому большая часть этого кода не будет применяться к вашему проекту. - person John P.; 05.02.2015