Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android PagerAdapter::将当前项放入位图_Android_Universal Image Loader_Android Pageradapter - Fatal编程技术网

Android PagerAdapter::将当前项放入位图

Android PagerAdapter::将当前项放入位图,android,universal-image-loader,android-pageradapter,Android,Universal Image Loader,Android Pageradapter,我正在为我的应用程序使用UniversalImageLoader。MyImageAdapter扩展PagerAdapter。我需要当前图像作为位图。通过回调方法public void onload complete(Bitmap loadedImage)我得到了位图。但这不是当前显示的位图图像。它是下一个图像或上一个图像(取决于交换)。以下是完整的代码: private class ImagePagerAdapter extends PagerAdapter { private

我正在为我的应用程序使用UniversalImageLoader。My
ImageAdapte
r扩展
PagerAdapter
。我需要当前图像作为位图。通过回调方法
public void onload complete(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

}

有没有办法得到正确的位图

膨胀视图时会出现问题:列表中使用的是同一个实例,因此当异步加载完成时,当viewpager尝试使用相同的imageView绘制不同的项目时,图像会发生更改。这是我如何修复我的

1) 创建名为ViewHolder的类

class ViewHolder {
    public ImageView image;
}
2) 完成充气后,立即创建新的ViewHolder对象并将其绑定

ViewHolder holder = new ViewHolder();
holder.image = (ImageView) imageLayout.findViewById(R.id.image_item_pager);
之后,您可以像普通的
ImageView
一样使用
holder.image


希望有此帮助。

当您膨胀视图时会出现问题:列表中使用的是同一个实例,因此当异步加载完成时,当viewpager尝试使用相同的imageView绘制不同的项目时,图像会发生更改。这是我如何修复我的

1) 创建名为ViewHolder的类

class ViewHolder {
    public ImageView image;
}
2) 完成充气后,立即创建新的ViewHolder对象并将其绑定

ViewHolder holder = new ViewHolder();
holder.image = (ImageView) imageLayout.findViewById(R.id.image_item_pager);
之后,您可以像普通的
ImageView
一样使用
holder.image


希望对您有所帮助。

如何获取当前视图-

然后:

View currentView = ...
ImageView currentImageView = (ImageView) currentView.findViewById(...);
BitmapDrawable bd = (BitmapDrawable) currentImageView.getDrawable();
Bitmap bmp = bd.getBitmap();

如何获取当前视图-

然后:

View currentView = ...
ImageView currentImageView = (ImageView) currentView.findViewById(...);
BitmapDrawable bd = (BitmapDrawable) currentImageView.getDrawable();
Bitmap bmp = bd.getBitmap();

谢谢重播。我的寻呼机工作正常。在imageView上加载精确的图像。问题是获取准确的位图
@Override public void onLoadingComplete(位图loadedImage){Bitmap=loadedImage;}
此函数用于在设置正确的图像后加载下一个或上一个图像。我需要当前的bimap图像。更改方法如何
imageLoader.displayImage(图像[位置],图像视图)
最新版本的
UniversalImageLoader
库具有
displayImage
方法,该方法只需要
image链接
imageView
作为参数。我已经使用它一段时间了。我正在搜索当前以位图显示的图像@诺斯特拉的解决方案奏效了。谢谢:)谢谢重播。我的寻呼机工作正常。在imageView上加载精确的图像。问题是获取准确的位图
@Override public void onLoadingComplete(位图loadedImage){Bitmap=loadedImage;}
此函数用于在设置正确的图像后加载下一个或上一个图像。我需要当前的bimap图像。更改方法如何
imageLoader.displayImage(图像[位置],图像视图)
最新版本的
UniversalImageLoader
库具有
displayImage
方法,该方法只需要
image链接
imageView
作为参数。我已经使用它一段时间了。我正在搜索当前以位图显示的图像@诺斯特拉的解决方案奏效了。谢谢:)