14

私は物事を表示する ListView を持っていますが、その多くには説明用の画像があり、一部にはありません。ViewHolder は NetworkImageView を使用してイラストを表示します。

問題は、デフォルトの画像が設定されていても、setImageUrl() を呼び出すまで表示されず、url が空の場合、ビューのソース ビットマップが null に設定されることです。URL が空でない場合は、リクエストを行います。これは、その特定のビューに関連付けられた有効なネットワーク URL がなくても、ネットワーク リクエストを行うことを強制されることを意味します。それ以外の場合は、デフォルトの画像を表示する代わりに、空のビューを表示します。

(提出された問題: https://code.google.com/p/android/issues/detail?id=59538 )

有効な URL のないアイテムに対して偽のネットワーク リクエストを作成する方法はありますか?

4

4 に答える 4

39

これは私にとってはうまくいきます:

    String url = getURL();
    NetworkImageView niv = (NetworkImageView)rootView.findViewById(R.id.niv);
    if(url.length() > 0)
        niv.setImageUrl(url, imageLoader);
    niv.setDefaultImageResId(R.drawable._default);
    niv.setErrorImageResId(R.drawable.error);
于 2014-02-08T10:01:53.710 に答える
0

ImageViewはスーパークラスなので、独自のセッター メソッドを使用して開始します。

niv.setImageResource(R.drawable.icon_no_image_avail);   // coerce NetworkImageView to draw itself initially.
于 2016-06-15T17:19:10.960 に答える
0

android:background="yourdrawable" を試すことができるかもしれません

<com.android.volley.toolbox.NetworkImageView
                    android:id="@+id/puppy_imageView"
                    android:layout_width="110dp"
                    android:layout_height="110dp"
                    android:scaleType="centerCrop"
                    android:background="@drawable/drawablename"

                    />

回答を更新

この答えを試した後、新しい画像が背景を上書きするので、良い答えではないことがわかりました

ドキュメントsetDefaultImageResIdによると、これを行うことができます

ロードの試行が完了するまで、このビューに使用されるデフォルトの画像リソース ID を設定します。

単にあなたがあなたを定義するとき

NetworkImageView _ImageView = (NetworkImageView) findViewById(R.id.imageview);
_ImageView.setDefaultImageResId(R.drawable.yourdrawable);
于 2015-11-29T19:36:53.507 に答える