0

これはかなり些細なことだと思いますが、動作させることができません。
実際の画像がネットからフェッチされている間、ギャラリー要素(ImageViews)にデフォルトの画像を表示したいと思います。
現在、画像がまだ到着していないImageViewには何も表示されません。到着するとすぐに表示されます。
私が試したのは、ImageViewのインスタンス化の直後に、次のようにsetImageResource関数を呼び出すことです。

最終的なImageViewi= new ImageView(mContext);
i.setImageResource(R.drawable.loading);

しかし、それは機能していないようです。以下は完全なgetView()関数です。
どんな助けでも大歓迎です。
ありがとう。

public View getView(int position, View convertView, ViewGroup parent) {

     final ImageView i = new ImageView(mContext);
     i.setImageResource(R.drawable.loading);


     // if the drawbale is in the buffer - fetch it from there
     Drawable bufferedImage = DataManager.getInstance().getImagesBuffer()[position];
     if (bufferedImage != null){
         i.setImageDrawable(bufferedImage);

         BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
         drawable.setAntiAlias(true);
     }
     // if drawable is not in buffer - fetch it from the net via AsyncImageLoader
     else
     {

         String imageUrl = DataManager.getInstance().getImageBufferInstance().getImageUrl(position);
         Drawable downloadedImage = AsyncImageLoader.getInstance().loadDrawable(imageUrl, new ImageCallback() {
         public void imageLoaded(Drawable imageDrawable, String imageUrl) {

                if (imageDrawable == null)
                {
                    imageDrawable = getResources().getDrawable(R.drawable.icon);
                }
                i.setImageDrawable(imageDrawable);

                BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
                drawable.setAntiAlias(true);    

                }
            });

         i.setImageDrawable(downloadedImage);
     }

     i.setLayoutParams(new CoverFlow.LayoutParams(Utils.getInstance().getScreenWidth() / 2,
             Utils.getInstance().getScreenHeight() / 2));
     i.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 


     return i;


 }
4

1 に答える 1

0

インデントを修正してください...私がそれを正しく読んでいる場合、(表示されていない) AsyncImageLoader の imageLoaded コールバックで一時的な描画可能アイコンを設定しているだけです。これは、画像がダウンロードされた後にのみ設定されることを意味すると思います。その後、ダウンロードしたイメージですぐに上書きされます。プレースホルダー設定コードを、コールバックの外にある else ブロックに移動してみてください。

于 2010-07-06T14:57:43.330 に答える