在android中,当滑动到另一个图像时,Viewpager给了我错误的位置

在android中,当滑动到另一个图像时,Viewpager给了我错误的位置,android,android-viewpager,Android,Android Viewpager,我的android应用程序中有一个ViewPager,我想用ViewPager显示我用它滑动的每个图像的特定信息,但是我在ViewPager中得到了错误的信息或位置,它在位置上增减不正确,它先增加两倍,请帮我解决它,我的代码如下: 代码: private class ImagePagerAdapter extends PagerAdapter { @Override public int getCount() { return subca

我的android应用程序中有一个
ViewPager
,我想用
ViewPager
显示我用它滑动的每个图像的特定信息,但是我在
ViewPager
中得到了错误的信息或位置,它在位置上增减不正确,它先增加两倍,请帮我解决它,我的代码如下: 代码:

private class ImagePagerAdapter extends PagerAdapter {

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

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = DetailsActivity.this;
            ImageView imageView;
            imageView = new ImageView(context);
            try {
                int padding = context.getResources().getDimensionPixelSize(
                        R.dimen.padding_medium);
                imageView.setPadding(padding, padding, padding, padding);
                imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                area.setText(subcategory.get(position).get(
                        Const.TAG_CATAEGORY_NAME));
                System.out
                        .println("::::::::::::::::INFO INDEX:::::::::::::::::"
                                + position);
                imageLoader.displayImage(
                        subcategory.get(position).get(Const.TAG_BIG_IMG),
                        imageView, options);
                System.out
                        .println("::::::::::::::::IMAGE INDEX:::::::::::::::::"
                                + position);
                opkey1.setText(subcategory.get(position).get("opk1"));
                opkey2.setText(subcategory.get(position).get("opk2"));
                opval1.setText(subcategory.get(position).get("opv1"));
                opval2.setText(subcategory.get(position).get("opv2"));

                ((ViewPager) container).addView(imageView, 0);
            } catch (NotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }
    }
ViewPager将预加载一个(默认情况下)寻呼机,以便用户可以顺利滑动。 看

PagerAdapter.InstanceItem(视图组容器,int位置) 此处的位置将不等于ViewPager.getCurrentItem()

如果您不想让用户刷当前位置,请使用

ViewPager.addOnPageChangeListener(OnPageChangeListener listener)
ViewPager将预加载一个(默认情况下)寻呼机,以便用户可以顺利滑动。 看

PagerAdapter.InstanceItem(视图组容器,int位置) 此处的位置将不等于ViewPager.getCurrentItem()

如果您不想让用户刷当前位置,请使用

ViewPager.addOnPageChangeListener(OnPageChangeListener listener)

我也面临同样的问题。我找到了以下解决方案: 在创建viewpager的活动的onCreate中,在创建viewpager之后,我添加了一个新的onpagechangelistener,并使用了onpagescrolled

ViewPager viewPager = (ViewPager)findViewById(R.id.pager2);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        if (positionOffsetPixels == 0) {
            //Do something on selected page at position
            mtextView.setText(String.valueOf(position + 1) + " of " + String.valueOf(totalimages) + " photos.");
        }
    }
});

我在其他地方找到了这些方法,我不记得了,但它对我很有效。我希望我能有所帮助。

我也遇到了同样的问题。我找到了以下解决方案: 在创建viewpager的活动的onCreate中,在创建viewpager之后,我添加了一个新的onpagechangelistener,并使用了onpagescrolled

ViewPager viewPager = (ViewPager)findViewById(R.id.pager2);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        if (positionOffsetPixels == 0) {
            //Do something on selected page at position
            mtextView.setText(String.valueOf(position + 1) + " of " + String.valueOf(totalimages) + " photos.");
        }
    }
});

我在其他地方找到了这些方法,我不记得了,但它对我很有效。我希望我能有所帮助。

这是默认行为,如果你想获得正确的位置,可以使用
viewpager.getCurrentPosition()这是默认行为,如果想要获得正确的位置,可以使用
viewpager.getCurrentPosition()谢谢charlie…救了我..Bollois是一个很好的答案,但问题是每次点击viewpager都会有五个以上的呼叫:)谢谢charlie…救了我..Bollois是一个很好的答案,但问题是每次点击viewpager都会有五个以上的呼叫:)