Какой из них использовать WebView или TextView в списке с данными HTML?

Во имя производительности лучше использовать список объектов веб-просмотра с определенным адаптером пользовательского массива или список объектов текстового просмотра снова с пользовательским адаптером и html-контентом для отображения в нем. Сначала я пытаюсь использовать веб-просмотр, но я думаю, что объект веб-просмотра является своего рода тяжелый элемент пользовательского интерфейса, текстовое представление кажется более легким.

WebView entryWebView = (WebView) findViewById(R.id.entryWebView);
                entryWebView.loadData("my hmtl formatted data", "text/html", "utf-8");

// предположим, что они определены в пользовательском адаптере массива и заполнены объектами веб-просмотра

TextView entryTextView = (TextView) v.findViewById(R.id.entry);
                entryTextView.setText("my html formatted data");

//и это снова в пользовательском адаптере массива и заполнено объектами textview


person Burak Dede    schedule 18.12.2010    source источник


Ответы (2)


WebView не работает как дочерний элемент ListView, так как и WebView, и ListView умеют прокручивать. Следовательно, я бы использовал TextView. Ограничьте свой HTML тегами, которые поддерживает Html.fromHtml(). Вот список поддерживаемых тегов. от Android 2.1 и других версий Android, вероятно, похожи.

Что касается производительности, TextView действительно значительно легче виджета и в любом случае будет работать лучше. Однако вы можете захотеть кэшировать свой вывод Html.fromHtml(), чтобы вам не приходилось повторно делать это для данной строки при прокрутке пользователем.

person CommonsWare    schedule 18.12.2010
comment
Да, в webView также есть прокрутка, при использовании с ListView могут возникнуть проблемы, и я решил использовать TextView, можете ли вы подробно рассказать о кэшировании вывода html? - person Burak Dede; 18.12.2010
comment
@Burak Dede: я не засекал Html.fromHtml(), но это может быть не быстро. Вы можете захотеть кэшировать результаты этого вызова на случай, если пользователь прокрутит страницу назад, чтобы вы могли повторно использовать результаты. Если вы используете LinkedHashMap в режиме LRU, удерживая SoftReferences для кэшированных данных, вы можете быть уверены, что у вас не закончится память. - person CommonsWare; 19.12.2010
comment
@CommonsWare: В ситуации, аналогичной Dede, поскольку TextView не поддерживает анимацию gif, какое решение является лучшим для отображения данных HTML со встроенной анимацией gif? - person Maghoumi; 08.12.2011

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

person Burak Dede    schedule 19.12.2010