我使用以下示例设置了一个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);