1

アプリケーションに UniversalImageLoader を使用しています。私のImageAdapter は拡張しPagerAdapterます。ビットマップとして currentImage が必要です。コールバック方法によりpublic void onLoadingComplete(Bitmap loadedImage)、ビットマップを取得しています。しかし、それは現在表示されているビットマップ イメージではありません。次の画像または前の画像のいずれかです (スワップに応じて)。完全なコードは次のとおりです。

    private class ImagePagerAdapter extends PagerAdapter {
    private String[] images;
    private LayoutInflater inflater;

    ImagePagerAdapter(String[] images) {
        this.images = images;
        inflater = getLayoutInflater();
    }

    @Override
    public void destroyItem(View container, int position, Object object) {
        ((ViewPager) container).removeView((View) object);
    }

    @Override
    public void finishUpdate(View container) {
    }

    @Override
    public int getCount() {
        return images.length;
    }

    @Override
    public Object instantiateItem(View view, int position) {
        if (view != null) {
            final View imageLayout = inflater.inflate(
                    R.layout.item_pager_image, null);
            final ImageView imageView = (ImageView) imageLayout
                    .findViewById(R.id.image_item_pager);

            imageLoader.displayImage(images[position], imageView, options,
                    new ImageLoadingListener() {

                        @Override
                        public void onLoadingStarted() {
                        }

                        @Override
                        public void onLoadingFailed(FailReason failReason) {
                            //On Loading Failed Logic                               
                        }

                        @Override
                        public void onLoadingComplete(Bitmap loadedImage) {
                                                        bitmap = loadedImage;  
                            imgViewSetAsWp.setImageBitmap(bitmap);
                        }

                        @Override
                        public void onLoadingCancelled() {
                            // Do nothing
                        }
                    });


            ((ViewPager) view).addView(imageLayout, 0);

            return imageLayout;
        } else
            return view;
    }

    @Override
    //Other override methood of ImagePager

}

適切なビットマップを取得する方法はありますか。

4

2 に答える 2

1

現在のビューを取得する方法 - https://stackoverflow.com/a/8638772/913762

その後:

View currentView = ...
ImageView currentImageView = (ImageView) currentView.findViewById(...);
BitmapDrawable bd = (BitmapDrawable) currentImageView.getDrawable();
Bitmap bmp = bd.getBitmap();
于 2013-01-01T09:52:59.827 に答える
0

ビューを膨らませるときに問題が発生します。これはリスト全体で使用されるのと同じ単一のインスタンスであるため、非同期読み込みが完了すると、ビューページャーが同じimageViewを使用して別のアイテムをペイントしようとしたときに画像が変更されます。これが私の修正方法です。

1)ViewHolderという名前のクラスを作成します

class ViewHolder {
    public ImageView image;
}

2)膨張が終了したらすぐに、新しいViewHolderオブジェクトを作成してバインドします。

ViewHolder holder = new ViewHolder();
holder.image = (ImageView) imageLayout.findViewById(R.id.image_item_pager);

その後、holder.image通常通りご利用いただけますImageView

この助けを願っています。

于 2012-12-29T07:37:16.000 に答える