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 と、新しいアクティビティに送信するその他の一連のデータを渡します。新しいアクティビティに到達すると、以下の方法を使用してそのデータを読み取っています。

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 変数が null であり、渡した 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 に答える