Как повысить производительность прокручиваемого списка, состоящего из непрокручиваемой сетки?

У меня есть список, в котором каждый элемент показывает календарь на месяц. В каждом элементе у меня есть gridview, чтобы показать дату. Итак, прокручивая элемент списка, я вижу, что календарный месяц меняется. Но прокрутка списка не гладкая. В поисках решения я дошел до того, что в рендеринге gridview есть 5 * 7 = 35 элементов, что замедляет прокрутку. Итак, я меняю getItem() Grid Adapter, возвращая только текстовое представление вместо моего макета.

Я также использовал AsyncTask для загрузки данных, которые затем передаются в сетевой адаптер. Но все же прокрутка идет медленно. Если есть альтернативное решение вместо создания 35 (каждое представление для одной даты) представлений с циклом, сообщите мне об этом.

Вот изображение для понимания проблемы. Мы можем прокручивать в обе стороны:

введите здесь описание изображения

Есть много кода по этому поводу.


person Patriotic    schedule 25.11.2016    source источник


Ответы (1)


Использовать viewTypes (переопределить getItemViewType(int pos) и getViewTypeCount()) в вашем адаптере. Одним типом представления будет заголовок (например, textView НОЯБРЬ 2016 г.), вторым типом будет заголовок (вероятно, LinearLayout с textViews — ВС ПН ВТ СР ЧТ ПТ СБ), а третьим типом будет LinearLayout с TextViews, содержащими дни.

Другим способом может быть повторное использование представлений внутри вашего календаря (GrideView сохранит представления измененными, и вы только измените его видимость и текст)

person egoldx    schedule 25.11.2016
comment
Спасибо за Ваш ответ. 1-е решение: я запутался, поскольку тестировал надувание только TextView. 2-е решение: я не понимаю! Не могли бы вы кратко описать? - person Patriotic; 25.11.2016
comment
вот код getItem(): @Override public View getView(int i, View itemView, final ViewGroup viewGroup) { if(itemView==null){ itemView= layoutInflater.inflate(R.layout.test_view,null);} } вернуть itemView; } - person Patriotic; 25.11.2016
comment
Какой адаптер вы используете? - person egoldx; 25.11.2016
comment
Я расширяю BaseAdapter для сетевого адаптера - person Patriotic; 25.11.2016