Повышение эффективности ListView при загрузке изображений с SD в ListView - PullRequest
1 голос
/ 19 февраля 2010

Я использую пользовательский адаптер для моего ListView в соответствии с примером эффективного адаптера Romain Guy.

В методе getView () моего адаптера я назначаю ImageView изображение jpg, сохраненное на SD, используя следующий код:

File f=new File(MovieThumbs.get(position));

if(f.length() > 0) {
    holder.thumb.setImageBitmap(BitmapFactory.decodeFile(MovieThumbs.get(position)));
}

При просмотре списка из примерно 200 элементов с использованием этого метода приложение страдает от плохого заикания, когда оно пытается работать с изображениями.

Есть ли более эффективное решение для этого?

Ответы [ 2 ]

1 голос
/ 19 февраля 2010

Вместо загрузки изображений из адаптера списка по требованию, как насчет запуска потока из onCreate вашей деятельности по загрузке изображений?Когда каждое изображение загружается, вы можете вызвать обратный вызов к действию, чтобы отобразить изображение в списке.Метод обратного вызова будет выглядеть примерно так:

void onImageDownloadComplete(int pos, BitMap bm) {
    ListView lv = getListView();
    View listItem = lv.getChildAt(pos);
    ImageView img = (ImageView)listItem.getChildAt(indexOfIcon);
    img.setImageBitmap(bm);
}
0 голосов
/ 08 июля 2010

Изображения должны быть обработаны в фоновом потоке. Переработанные взгляды должны быть приняты во внимание. Я пытаюсь решить все эти проблемы в моем примере кода, теперь он работает нормально, вы можете посмотреть Ленивая загрузка изображений в ListView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...