Страница 1 из 1

Listview, адаптер и взаимодействие с сетью

Добавлено: 13 мар 2013, 16:42
Makute
Доброго времени суток.
Ситуация следующая: есть listview и, естественно, к нему адаптер. Путем проб и ошибок была выяснена невозможность взаимодействовать с элементами listview(не из адаптера при заполнении) без ошибок, костылей и геморроя, только если душу дьяволу продавать. Посему все заполняется в адаптере, но данные берутся из интернета, с чем, собственно, и связаны проблемы.
Делал так

Код: Выделить всё

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
	StrictMode.setThreadPolicy(policy);
//загрузка и обработка данных 
далее заполнял view и скармливал его getView, все было хорошо, если бы не понижение fps приложения от одной(!) такой процедуры, при том заметно.

Вопрос в следующем: как взаимодействовать с view из листа не из адаптера и не при заполнении? Т.е. присвоили адаптер, а потом уже заполняем. Возможно ли это? Знаю что возможно, но то элемент обнулится при скрытии оного на экране, то ещё чего..
Как организовать работу с потоками, хандлерами, asynctask'ами так, чтобы заполнение в адаптере не приносило подтормаживаний после заполнения\во время? Заполнение, собственно, тоже вынесено в поток, с этим проблем нет.

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 13 мар 2013, 22:46
rezak90
Вам нужен "ленивый ListView", примеров куча, даже на том же хабре

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 14 мар 2013, 11:03
Makute
rezak90 писал(а):Вам нужен "ленивый ListView", примеров куча, даже на том же хабре
Ссылки можно увидеть?
Погуглил, ничего подобного не увидел. Если суть его в том, что он не рефрешит элементы при прокрутке - это не подойдет, скорее всего.

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 14 мар 2013, 11:18
rezak90
серъёздно нчиего нету? 105 000 страниц
https://sites.google.com/site/androidap ... y-listview
https://github.com/commonsguy/cwac-endl ... apter.java
суть в том что бы на каждую ячейку создавался отдельный поток, но здесь главное не перемудрить что бы потоки не плодились

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 14 мар 2013, 15:49
Makute
rezak90 писал(а):серъёздно нчиего нету? 105 000 страниц
https://sites.google.com/site/androidap ... y-listview
https://github.com/commonsguy/cwac-endl ... apter.java
суть в том что бы на каждую ячейку создавался отдельный поток, но здесь главное не перемудрить что бы потоки не плодились
Благодарю.
Вы говорили, что на хабре есть статья о них же?

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 14 мар 2013, 15:56
Finch
Самый крутой вариант реализации который встречал на сегодняшний день. Использую с Вью холдером в связке и очень доволен, никаких фризов и зависаний. Гладкий скрол даже при очень быстром пролистывании огромнейшего листа и даже на уг смартфонах, типа Ace, Gio и тд и тп.

В основном все лаги и фризы из-за картинок, ну по крайней мере не видел чтоб от текста лагало =)

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 14 мар 2013, 16:49
Makute
Всем спасибо, проблема почти решена.
Господа, можете привести пример взаимодействия AsyncTask и listview? Т.е. в потоке что-то выполнили, потом передали листу, он этими данными что-то заполнил? Ленивые листы делают именно это, по сути, но я не смог разобраться в них в полной мере.. Там все делается через кэш, перезагрузку листа и т.д.

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 14 мар 2013, 16:56
Makute
UPD:
резак, не мог бы ты на русском, адекватными примерами объяснить, как реализовать ленивый лист и собственный поток для каждой задачи?

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 14 мар 2013, 17:13
rezak90
будет время раскажу, но не сегодня и не завтра, так как пока что есть вермя только зайти сюда на 5 минут

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 15 мар 2013, 14:27
Foenix
Быстрее английский выучить можно ))

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 15 мар 2013, 18:58
Makute
Olivka писал(а):Быстрее английский выучить можно ))
Проблем с переводом нет, но сам механизм работы не совсем понятен. Либо он слишком уж тривиален(грузим-кэшируем-перезагружаем адаптер, беря данные из кэша-повторяем), либо я чего-то не понял.

Re: Listview, адаптер и взаимодействие с сетью

Добавлено: 15 мар 2013, 20:30
Foenix
Я про то, что как организовать ленивый лист - этого полно в сети. Не только один единственный rezak90 это знает..