【问题标题】:Unable to download .jpg image and set into imageview using asynctask无法下载 .jpg 图像并使用 asynctask 设置为 imageview
【发布时间】:2011-05-11 01:51:07
【问题描述】:


我有个问题。我似乎无法从 URL 源下载 .jpg 图像,然后将其设置为列表视图内的图像视图。它给了我错误“NullPointerException”。我目前正在使用来自here 的 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.GIF&client=tpoly&type=xw12";
            ImageView iv = (ImageView) findViewById(R.id.cover_image);
            imageDownloader.download(isbnURL,iv);
        }

我认为这可能是由于我的 setContentView(R.layout.list) 产生了错误,因为它只是一个列表视图,而图像视图链接在另一个 xml 文件中。

下面是 LogCat:

05-11 09:26:58.063: 错误/AndroidRuntime(305): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.TPLibrary/com.TPLibrary.Search.SearchResults}: 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(Handler.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.Method.invokeNative(Native Method) 05-11 09:26:58.063: 错误/AndroidRuntime(305): 在 java.lang.reflect.Method.invoke(Method.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.Search.ImageDownloader.forceDownload(ImageDownloader.java:80) 05-11 09:26:58.063: 错误/AndroidRuntime(305): 在 com.TPLibrary.Search.ImageDownloader.download(ImageDownloader.java:49) 05-11 09:26:58.063: 错误/AndroidRuntime(305): at com.TPLibrary.Search.SearchResults.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 类?

【问题讨论】:

  • 也可能是我在for循环中错误地使用了“下载”方法。我想。

标签: android imageview android-asynctask


【解决方案1】:

在 ImageDownloader 类中,模式分配给 NO_ASYNC_TASK:

public enum Mode { NO_ASYNC_TASK, NO_DOWNLOADED_DRAWABLE, CORRECT }
private Mode mode = Mode.NO_ASYNC_TASK;

您的意图是下载图像。所以尝试将模式变量设置为 NO_DOWNLOADED_DRAWABLE。

【讨论】:

  • 嘿,谢谢你的回复。我试过你的答案,它并没有真正起作用。我相信这是因为我的 imageView 有一个空指针异常。我正在使用一个简单的适配器来显示我的带有图像视图的数据列表,而不是使用上面链接中的适配器类。那么无论如何我可以将我的 ImageLoader 类的 imageview 链接到我的 xml 的 imageview 吗?
  • 您应该尝试使 ImageDownlader 成为 SearchResults 的子类。然后在 SearchResults 范围内定义你的 ImageView。 (您可能想在 SearchResult 的 onCreate() 中初始化此变量)然后您将能够查看是否存在类内部或链接 ImageView 的问题。
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 2011-09-13
  • 2013-10-27
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多