私のアンドロイドアプリケーション内で、URLから指定された画像でImageViewを更新したいと考えています。このURLは、AsyncTaskの一部としてAPI経由で取得されています。URLからの画像を使用してImageViewを更新する
<ImageView
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_height="wrap_content"
android:id="@+id/product_image"
android:src="@drawable/no_product_image"
android:layout_marginRight="6dip"
android:layout_width="wrap_content"
/>
そのようにデータがロードされている一方、ProgressDialogの背後に存在するブランクイメージがあり、次のよう
IはImageViewのが定義されています。 AsyncTaskのdoInBackgroundの一環として、製品の詳細をフェッチした後、私は
を呼び出す:
private void createProductScreen(Product product){
Log.i(TAG, "Updating product screen");
//Set the product image
ImageView imgView =(ImageView)findViewById(R.id.product_image);
Drawable drawable = loadImageFromWeb(product.getImageUrl());
imgView.setImageDrawable(drawable);
Log.i(TAG, "Set image");
}
次のように画像がウェブからロードされる:
private Drawable loadImageFromWeb(String url){
Log.i(TAG, "Fetching image");
try{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src");
Log.i(TAG, "Created image from stream");
return d;
}catch (Exception e) {
//TODO handle error
Log.i(TAG, "Error fetching image");
System.out.println("Exc="+e);
return null;
}
}
これはIを実行すると「ストリームからのイメージの作成」をログに表示しますが、「イメージの設定」が表示されず、AsyncTaskのonPostExecuteは呼び出されません。
誰かが問題に関するアイデアを持っているか、ブランクイメージから製品イメージにイメージを更新するためのより良い方法はありますか?
http://www.androidhive.info/2012/07/android-loading-image-from-url-http/この投稿に従います。私はいくつかのカスタムクラスと、イメージやイメージをロードするために実装できる関数を追加する必要があると思います。 – ishtiyaqm15