1

我目前正在开发一个具有使用 LazyLoader 方法填充的 List 的应用程序,因此我拥有以下类:

FileCache.java、ImageLoader.java、LazyAdapter.java、Utils.java

基本上,当我填充列表时,图像加载鳍,但是我想在单个项目视图上显示所选列表项的图像,当它被选中时。因此,当用户单击列表项时,他们将被带到一个新活动以查看该项目周围的所有详细信息。为了保存数据库调用,我在列表中收集了所有需要的数据并将其隐藏在字段中,然后使用以下方法将其传递给单个项目视图:

String ImageURL = ((TextView) view.findViewById(R.id.ImageURL)).getText().toString();

Intent i = new Intent(getApplicationContext(), VenueItem.class);

i.putExtra("ImageURL", ImageURL);

startActivity(i);

然后,这会将那个 URL 和我发送到新活动的一堆其他数据传递给新的 Activity。当它到达新活动时,我正在使用以下方法读取该数据:

String image_url;

Intent i = getIntent();

image_url = i.getStringExtra("ImageURL");

ImageView thumb_image=(ImageView) findViewById(R.id.itemImage); // thumb image

imageLoader.DisplayImage(image_url, thumb_image); //This is the line it fails on

正如你所看到的,我已经突出显示了上面似乎失败的行,并且我得到了一个 nullpointerexception 错误,即使我已经调试了代码并且当它到达该行时,它传递的 2 个参数都存在。图像加载器的代码如下:

final int stub_id = R.drawable.noimage;
    public void DisplayImage(String url, ImageView imageView)
    {
        imageViews.put(imageView, url);
        Bitmap bitmap=memoryCache.get(url);
        if(bitmap!=null)
            imageView.setImageBitmap(bitmap);
        else
        {
            queuePhoto(url, imageView);
            imageView.setImageResource(stub_id);
        }
    }

我认为这可能与我调用图像加载器的方式有关,有人可以帮我解决这个问题,因为它很烦人吗?或者有人可以告诉我更好的方法来获取已经缓存并显示在列表中以显示在单个项目活动中的图像吗?

谢谢

4

1 回答 1

2

听起来可能很愚蠢,但你真的实例化了 imageLoader 吗?因为你还没有包含它的代码;)

似乎 imageLoader 变量可能是空值,而不是您传递给它的 image_url 和 thumb_image 。

试图运行

imageLoader.DisplayImage(image_url, thumb_image);

如果 imageLoader 为 null 将导致 NullPointerException 例如您已声明它但未实例化它:

ImageLoader imageLoader;

这需要是

ImageLoader imageLoader = new ImageLoader();
于 2013-03-17T19:36:15.267 回答