Android ListView с проблемой изображения AsyncTask

У меня есть ListView, который показывает некоторые определенные контакты из телефонной книги. Я использую этот https://stackoverflow.com/a/10235381/1809507 в качестве класса Cache и использую AsyncTask.

Когда у контакта нет фотографии, я использую фотографию по умолчанию. Я установил значение по умолчанию внутри XML. Когда я использую следующие методы для установки фотографии контакта, только если она существует, и я прокручиваю список, те контакты, у которых нет фотографии, начинают получать фотографии других контактов. Если я получаю из метода retrieveContactPhoto фотографию по умолчанию в виде растрового изображения, а не null, и назначаю ее для просмотра изображений, она отлично работает, но я думаю, что это не очень хорошее решение, когда есть много контактов без фотографий, потому что я бы кэшировал одну и ту же фотографию по умолчанию несколько раз. Или я ошибаюсь?

@Override
    protected Bitmap doInBackground(Void... args)
    {
        Bitmap bm = HelpClasses.retrieveContactPhoto(contextInput, HelpClasses.fetchContactIdFromPhoneNumber(contextInput, phoneNumber));
        if(bm != null)
        {
            synchronized (cache)
            {
                cache.put(phoneNumber, bm);
            }

        }
        return bm;
    }

@Override
protected void onPostExecute(Bitmap result)
{
    if(mView != null && result != null)
    {
         mView.setImageBitmap(result);
    }
}

person edoniti    schedule 29.11.2013    source источник
comment
samir-mangroliya.blogspot.in/p/   -  person Rahul Gupta    schedule 29.11.2013
comment
Как вы можете видеть в моем коде, у меня уже есть метод fetchContactIdFromPhoneNumber, а затем получитьContactPhoto из идентификатора контакта.   -  person edoniti    schedule 29.11.2013


Ответы (1)


Я думаю, вы ищете эту библиотеку: https://github.com/nostra13/Android-Universal-Image-Loader

Или вам может понадобиться более «гугловский» вариант: https://code.google.com/p/libs-for-android/wiki/ImageLoader

Вы можете оставить всю привязку, выборку и кэширование изображений библиотеке.

person Robin    schedule 29.11.2013
comment
Большое спасибо, но эти библиотеки также кэшируют фотографию по умолчанию. Что я считаю ненужным, я хочу, чтобы фотография по умолчанию из XML не назначалась снова из кеша или SD-карты. - person edoniti; 29.11.2013
comment
Изображение по умолчанию кэшируется в памяти, и все представления изображения будут ссылаться на один и тот же экземпляр. - person Robin; 30.11.2013