Подгрузка ListView

Интерфейс, диалоги, темы, стили, меню
Ответить
Andrey90
Сообщения: 11
Зарегистрирован: 18 сен 2013, 12:05

Подгрузка ListView

Сообщение Andrey90 » 31 окт 2015, 21:44

Надо при прокрутке подгружать картинки в ListView.
Сделал такой код:
list.setOnScrollListener(new OnScrollListener() {

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
for(int i = list.getFirstVisiblePosition(); i<list.getLastVisiblePosition(); i++){
if(i<10){

if(icon_list.get(i)==null){
new ThreadImSec1(i).execute();
}
}
if(i>9&&i<20){
if(icon_list.get(i)==null){
new ThreadImSec2(i).execute();
}
}
}
}


@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {



}

});
Потоками поочередно гружу картинки, каждый раз созадавая поток и передавая индекс нужного элемента. Такая реализация работает очень медленно, у меня быстрее работает раза в три если тупо эти потоки запустить без всяких обработок скрола.. Как можно оптимизировать?
Пример потока:
public class ThreadImSec1 extends AsyncTask<String, Void, Bitmap> {
int number;

public ThreadImSec1(int _number)
{
number = _number;
}
@Override
protected Bitmap doInBackground(String... arg) {
DefaultHttpClient hc = new DefaultHttpClient();
ResponseHandler<String> response = new BasicResponseHandler();
HttpGet http_new ;
Bitmap mIcon = null;
try {
http_new = new HttpGet(api_new);
answer_new = hc.execute(http_new, response);
jsonA_new = new JSONArray(answer_new);
icon=jsonA_new.getJSONObject(number).getString("icon").toString();
InputStream in = new java.net.URL(domen+icon).openStream();
mIcon = BitmapFactory.decodeStream(in);

icon_list.set(number,mIcon);
in.close();



}catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return mIcon;

}
@Override
protected void onPostExecute(Bitmap result) {
adapter.notifyDataSetChanged();

}

Realist
Сообщения: 134
Зарегистрирован: 08 фев 2014, 18:15

Re: Подгрузка ListView

Сообщение Realist » 01 ноя 2015, 08:53


Ответить