В приложении мне необходимо скачивать из сервера изображения, а потом отображать их вместе с текстом в ListView.
Изображения хранятся в памяти, а в базе данных хранятся только их адреса. Для работы ListView я создал класс, в котором переопределил SimpleCursorAdapter.
Все нормально: картинки и нужная инфа отображается, но вот при прокрутке такого списка начинается дико торможение. Как я предполагаю, это связано с тем, что при переотрисовке элемента списка приложение заново обращается к базе данных, получает путь к фалу изображения, а затем грузит картинку.
А возможно это зависит от размера изображения? Помогите пожалуйста советом, как можно это оптимизировать
Вот кусок из моего переопределенного SimpleCursorAdapter-a
Код: Выделить всё
@Override
public void bindView(View view, Context context, Cursor cursor) {
int id = cursor.getInt(cursor.getColumnIndex(this.VID_COLUMN));
String title = cursor.getString(cursor.getColumnIndex(this.TITLE_COLUMN));
String dateOf = cursor.getString(cursor.getColumnIndex(this.DATE_COLUMN));
TextView titleView = (TextView) view.findViewById(R.id.news_item_header);
titleView.setText(title);
TextView dateItem = (TextView) view.findViewById(R.id.news_item_date);
dateItem.setText(dateOf);
Cursor imagesCur = this.sqlClient.getImages(id);
int columnIndex = imagesCur.getColumnIndex("image_path");
// Если есть картинка для новости - показываем ее
if (imagesCur.moveToFirst() && imagesCur.getCount() !=0 ){
// Получаю путь для картинки из базы данных
String imgPath = imagesCur.getString(columnIndex);
File myImage = new File(imgPath);
// Получаю битмап
Bitmap myBitmap = BitmapFactory.decodeFile(myImage.getAbsolutePath());
ImageView img = (ImageView) view.findViewById(R.id.previewImg);
// Устанавливаю его в качестве содержимого ImageView
img.setImageBitmap(myBitmap);
}
}