Изображение не загружается с помощью picasso в Android api 19 и ниже

#android #picasso #lib

#Android #picasso #библиотека

Вопрос:

Слева приведен список, отображаемый на уровне API 19, а справа — API 28. Для API 19 я не могу загружать изображения флага с помощью Picasso. https://i.stack.imgur.com/PU7QJ.png

Вот как я это делаю прямо сейчас.

 interface ImageFetcher {
    fun loadImage(url: String, callback: (bitmap: Bitmap) -> Unit)
}

class RemoteImageFetcher(val context: Context) : ImageFetcher {
    override fun loadImage(url: String, callback: (bitmap: Bitmap) -> Unit) {
        val target = object : com.squareup.picasso.Target {
            override fun onBitmapLoaded(bitmap: Bitmap, from: Picasso.LoadedFrom?) {
                callback.invoke(bitmap)
            }
            override fun onPrepareLoad(placeHolderDrawable: Drawable?) {}
            override fun onBitmapFailed(e: Exception?, errorDrawable: Drawable?) {}
        }
        Picasso.get().load(url).into(target)
        
    }
  

Комментарии:

1. попробуйте добавить .setLoggingEnabled(true) после вашего вызова Picasso get() (so Picasso.get().setLoggingEnabled(true).load(url).into(target) ) и посмотрите, какие сообщения об ошибках вы получаете в журналах

2. Спасибо. После добавления раздела в мой код. созданный журнал не может найти метод android.content. Context.getDrawable, на который ссылается метод com.squareup.picasso.RequestCreator.getPlaceholderDrawable

3. Странно, RequestCreator класс вызывает этот метод только в API 21 , он использует ContextCompat который должен вызывать context.getResources().getDrawable() вместо этого. Я не знаю, что могло бы помочь, но если вы где-то используете векторный заполнитель для рисования, попробуйте вместо него растровый, на всякий случай, если это как-то связано с этим. И, возможно, попробуйте установить точку останова и выполнить пошаговое выполнение с помощью отладчика, посмотрим, сможете ли вы выяснить, почему он выполняет этот context.getDrawable() вызов