Ион java.lang.ClassCastException

Я использую ION (https://github.com/koush/ion) для загрузки изображений из сеть в ListView из ImageView. В настоящее время я хочу получить растровое изображение из ImageView, но я получаю одно исключение, которое принудительно закрывает мое приложение:

java.lang.ClassCastException: com.koushikdutta.ion.IonDrawable cannot be cast to android.graphics.drawable.BitmapDrawable

Это строки, которые я использую:

final ImageView itemImageView = (ImageView)view.findViewById(R.id.photoImage);
final Bitmap itemDrawable = ((BitmapDrawable) itemImageView.getDrawable()).getBitmap();

Как я могу это решить? Заранее спасибо!


person pluralism    schedule 02.07.2014    source источник
comment
Что вы пытаетесь сделать в этой строке. final Bitmap itemDrawable = ((BitmapDrawable) itemImageView.getDrawable()).getBitmap();   -  person Shivam Verma    schedule 02.07.2014
comment
@ShivamVerma Я пытаюсь получить растровое изображение ImageView, но BitmapDrawable нельзя преобразовать в IonDrawable.   -  person pluralism    schedule 02.07.2014
comment
чего именно вы хотите добиться. Возможно, это не лучший способ сделать то, что вы пытаетесь сделать.   -  person Shivam Verma    schedule 02.07.2014
comment
Рассматривали ли вы возможность использования загрузчика изображений volley? Я нашел его очень простым в использовании, и вы можете без проблем преобразовать его в растровое изображение. Проверьте это и эти руководства, если вы заинтересованы   -  person Carlos J    schedule 02.07.2014
comment
@CarlosJimenez Спасибо! Я попробую!   -  person pluralism    schedule 02.07.2014
comment
Ion устанавливает настраиваемый объект рисования, поэтому его нельзя преобразовать в BitmapDrawable. Используйте: Ion.with(imageView).getBitmap() для получения растрового изображения.   -  person koush    schedule 26.12.2014


Ответы (3)


Возможно, стоит изучить:

"Универсальный загрузчик изображений" от nostra13

Это потрясающая библиотека с множеством функций для отображения изображений с URL-адресов, преобразования в растровые изображения и т. д.

person Jonny07    schedule 02.07.2014
comment
Благодарю вас! Это решило мою проблему! Замена всего заняла 5 минут! - person pluralism; 02.07.2014
comment
@ Jonny07: Не могли бы вы сообщить мне, возможно ли преобразовать XML (имеющий imageView) в растровое изображение в UniversalImageLoader? Я пробую следующее: goo.gl/1hs4bn. Мой вопрос по SO: goo.gl/Sz2fV0 Но Picasso не загружает изображение должным образом. Иногда я получаю изображение или изображение-заполнитель. Что ты предлагаешь? - person TheDevMan; 28.09.2014

Ion устанавливает настраиваемый объект для управления анимированными GIF-файлами, переходами затухания и т. д., поэтому его нельзя преобразовать в BitmapDrawable.

Использовать:

Ion.with(imageView).getBitmap()

чтобы получить растровое изображение

person koush    schedule 26.12.2014

Если вы устанавливаете обратный вызов при выполнении запроса Ion и возвращаете ImageViewBitmapInfo, вы можете получать растровые изображения таким образом. Например,

Ion.with(imageView)
   .placeholder(R.drawable.default_avatar)
   .load(userImageURL)
   .withBitmapInfo()
   .setCallback(new FutureCallback<ImageViewBitmapInfo>() {
       @Override
       public void onCompleted(Exception e, ImageViewBitmapInfo result) {
           // Check for exceptions

           // Check bitmaps first
           Bitmap b = result.getBitmapInfo().bitmaps[0];
           ...
       };
person kingdonnaz    schedule 27.10.2014