#android #imageview #android-asynctask
#Android #просмотр изображений #android-asynctask
Вопрос:
У меня проблема. Кажется, я не могу загрузить изображение в формате .jpg из источника URL, а затем установить его в imageview, который находится внутри listview. Это выдает мне ошибку «NullPointerException». В настоящее время я использую класс ImageDownloader из здесь.
Это строки кода, в которых я загружаю файлы изображений:
onCreate ()…
for (int i = 0; i < listData.size(); i ) { imageISBN = listData.get(i).get("coverImage"); String isbnURL = "http://lib.syndetics.com/index.aspx?isbn=" imageISBN "/SC.GIFamp;client=tpolyamp;type=xw12"; ImageView iv = (ImageView) findViewById(R.id.cover_image); imageDownloader.download(isbnURL,iv); }
Я думаю, что это, возможно, из-за моего setContentView (R.layout.list), который выдает ошибку, поскольку это просто listview, а ссылка imageview находится в другом XML-файле.
Ниже приведен LogCat:
05-11 09:26:58.063: ОШИБКА / AndroidRuntime(305): исключение java.lang.RuntimeException: Не удается запустить activity ComponentInfo{com.TPLibrary / com.TPLibrary.Поиск.Результаты поиска}: java.lang.Исключение NullPointerException 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в android.app.ActivityThread$H.handleMessage (ActivityThread.java:2033) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в android.os.Handler.DispatchMessage (обработчик.java:99) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в android.os.Looper.loop (Looper.java:123) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в android.app.ActivityThread.main (ActivityThread.java:4627) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в java.lang.reflect.Метод.invokeNative (собственный метод) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): на java.lang.reflect.Метод.invoke(метод.java:521) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в dalvik.system.NativeStart.main (собственный метод) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime(305): вызвана: java.lang.Исключение NullPointerException 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): на com.TPLibrary.Поиск.ImageDownloader.forceDownload (ImageDownloader.java:80) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): на com.TPLibrary.Поиск.ImageDownloader.download (ImageDownloader.java:49) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): на com.TPLibrary.Поиск.Результаты поиска.onCreate(SearchResults.java:185) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime(305): в android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627) 05-11 09:26:58.063: ОШИБКА / AndroidRuntime (305): … еще 11
Итак, ребята, есть идеи? Может быть, я неправильно использую класс ImageDownloader?
Комментарии:
1. Также могло случиться так, что я ошибочно использовал метод «загрузить» в цикле for. Я думаю.
Ответ №1:
В классе ImageDownloader режиму присвоено значение NO_ASYNC_TASK:
public enum Mode { NO_ASYNC_TASK, NO_DOWNLOADED_DRAWABLE, CORRECT }
private Mode mode = Mode.NO_ASYNC_TASK;
Вы намеревались загрузить изображение. Поэтому попробуйте установить для переменной mode значение NO_DOWNLOADED_DRAWABLE.
Комментарии:
1. привет, спасибо за твой ответ. Я попробовал ваш ответ, и он действительно не сработал. Я считаю, что это связано с тем, что в моем ImageView есть исключение nullpointerexception. Я использую simpleadapter для отображения моего списка данных с помощью imageviews вместо использования adapterclass, как по ссылке выше. Итак, могу ли я в любом случае связать imageview моего класса ImageLoader с imageview моего xml?
2. Вам следует попробовать сделать ImageDownlader подклассом SearchResults. Затем определите свой ImageView в области SearchResults. (возможно, вы захотите инициализировать эту переменную в onCreate() от SearchResult) Затем вы сможете увидеть, есть ли проблема внутри классов или связывания ImageView.