java – setOnPageChangeListener不调用onPageSelected

我使用以下示例设置了一个simpleonpagechangelistener

Android SimpleOnPageChangeListener – Determine swipe direction

但是,当我执行代码然后滑动viewpager时,我希望调用以下行:

public void onPageSelected(int position) {

但是它似乎永远不会这样做 – 这导致了一个功能性的viewPager.

有什么建议?

public class Home extends YouTubeBaseActivity implements VideoClickListener {
    ...
    private int mCurrentTabPosition = NO_CURRENT_POSITION;
    private static final int NO_CURRENT_POSITION = -1;
    private ViewPager mPager;
    ...
    int imageArray[];
    String[] stringArray;

    private OnPagechangelistener mPagechangelistener;
    ImagePagerAdapter adapter = new ImagePagerAdapter();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);

        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

        viewPager.setAdapter(adapter);
...

        setonPagechangelistener(mPagechangelistener);


        mPagechangelistener = new ViewPager.SimpleOnPagechangelistener() {


            @Override
            public void onPageSelected(int position) {
                onTabChanged(mPager.getAdapter(),mCurrentTabPosition,position);
                position = mCurrentTabPosition;
                int oldPos = viewPager.getCurrentItem();
                if (position > oldPos) {

                    System.out.print(position);
                    // Moving to the right
                    String playlist = "TheMozARTGROUP‎";
                    new GetYouTubeUserVideosTask(responseHandler,playlist)
                            .execute();

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();

                } else if (position < oldPos) {
                    // Moving to the Left
                    System.out.print(position);
                    String playlist = "TheMozARTGROUP‎";
                    new GetYouTubeUserVideosTask(responseHandler,playlist)
                            .execute();

                    View vg = findViewById(R.layout.home);
                    vg.invalidate();

                }
                viewPager.setonPagechangelistener(mPagechangelistener);
            }

            private void onTabChanged(PagerAdapter adapter,int mCurrentTabPosition,int position) {
                // Todo Auto-generated method stub

            }
        };

    }

    private void setonPagechangelistener(
            OnPagechangelistener mPagechangelistener2) {
        // Todo Auto-generated method stub

    }

    ...



    private class ImagePagerAdapter extends PagerAdapter {
        public ImagePagerAdapter(Activity act,int[] mImages,String[] stringArra) {
            imageArray = mImages;
            activity = act;
            stringArray = stringArra;
        }


        public ImagePagerAdapter() {
            super();

        }

        private int[] mImages = new int[] { R.drawable.selstation_up_btn,R.drawable.classical_up_btn,R.drawable.country_up_btn,R.drawable.dance_up_btn,R.drawable.hiphop_up_btn,R.drawable.island_up_btn,R.drawable.latin_up_btn,R.drawable.pop_up_btn,R.drawable.samba_up_btn };

        private String[] stringArray = new String[] { "vevo","TheMozARTGROUP‎","TimMcGrawVEVO‎","TiestoVEVO‎","EminemVEVO‎" };

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

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

        @Override
        public Object instantiateItem(ViewGroup container,int position) {
            Context context = Home.this;
            ImageView imageView = new ImageView(context);
            imageView.setScaleType(ScaleType.FIT_XY);
            imageView.setimageResource(mImages[position]);
            ((ViewPager) container).addView(imageView,0);
            return imageView;
        }

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

        protected void onTabChanged(final PagerAdapter adapter,final int oldPosition,final int newPosition) {
            // Calc if swipe was left to right,or right to left
            if (oldPosition > newPosition) {
                // left to right
            } else {
                // right to left


            }
            final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

        }
    }
}

XML:

<android.support.v4.view.ViewPager
  android:id="@+id/view_pager"
  android:layout_width="wrap_content"
  android:layout_height="fill_parent" />

解决方法

使用
viewPager.setonPagechangelistener(mPagechangelistener);

去掉

private void setonPagechangelistener(
        OnPagechangelistener mPagechangelistener2) {
    // Todo Auto-generated method stub

}

setonPagechangelistener(mPagechangelistener);

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...