【问题标题】:Updating View Pager from Gallery's onItemClick从 Gallery 的 onItemClick 更新 View Pager
【发布时间】:2014-06-10 12:41:07
【问题描述】:

我已经设置了 View Pager 和 Gallery。我想从我的画廊的 OnItemClickListener 更新我的 View Pager 的 ImageView 并将 ImageView 传递给它,以便它会更新,以便有一个更大的图像视图。

我怎样才能做到这一点?如果有人可以帮助我,那就太好了,谢谢。

这是我设置的(见 onClickGallery 类的底部):

public void updateUI(final SimpleItemType item) {

    class ImagePagerAdapter extends PagerAdapter {

        private List<String> mImages = item.pictureURL;

        @Override
        public int getCount() {

            if (mImages == null) {

                SuperToast.create(
                        getApplicationContext(),
                        "No image available",
                        SuperToast.Duration.VERY_SHORT,
                        Style.getStyle(Style.GRAY,
                                SuperToast.Animations.SCALE)).show();

            }

            else {

                return mImages.size();
            }
            return 0;

        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = DetailActivity.this;
            ImageView imageView = new ImageView(context);
            int padding = context.getResources().getDimensionPixelSize(
                    R.dimen.padding_medium);
            imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

            Picasso.with(context).load(item.pictureURL.get(position)).fit()
                    .centerInside().into(imageView);

            ((ViewPager) container).addView(imageView);

            return imageView;
        }

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

    class ImageGalleryAdapter extends BaseAdapter {

        private List<String> mImages = item.pictureURL;

        @Override
        public int getCount() {
            return mImages.size();
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView = (ImageView) convertView;
            Context context = DetailActivity.this;
            if (imageView == null) {
                imageView = (ImageView) getLayoutInflater().inflate(
                        R.layout.item_gallery_image, parent, false);
            }

            Picasso.with(context).load(item.pictureURL.get(position)).fit()
                    .centerInside().into(imageView);
            return imageView;
        }

    }

    gallery.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            //Here I would like to pass my ImageView from gallery to view pager


        }
    });

【问题讨论】:

    标签: android imageview android-viewpager android-gallery


    【解决方案1】:

    尝试将 viewpager 的 imageview 声明为全局(如 mImages), 然后像这样更改 imageview 的图像:

    imageView.setBackgroundResource(your.image.resource);
    

    【讨论】:

    • 我已经尝试过了,由于某些奇怪的原因,当我尝试全局声明我的 ImageView 时,我得到了空指针异常。如果我用大头跟踪更新我的答案,也许你可以帮助我?
    • 当然,希望我们能尽快查明真相。也发布你的堆栈跟踪和更新的代码,我想看看你在哪里以及如何声明它。
    • 好的,我设法解决了 NPE 问题,但现在我遇到了另一个与问题无关的问题,无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多