2012-04-12 41 views
3

我按SwipeyTabsAdapter的库ViewPager ViewPagerExtensions(com.astuetz.viewpager.extensions)水平实现。无论如何,当改变看法时要拦截?以同样的方式,我可以随时知道用户在什么样的视图中?在ViewPager上检测视图更改

ViewPager

的代码
public class DiccionariuPagerAdapter extends PagerAdapter { 

    protected transient Activity mContext; 

    private int mLength = 0; 

    public DiccionariuPagerAdapter(Activity context, int length) { 
     mContext = context; 
     mLength = length; 
    } 

    @Override 
    public int getCount() { 
     return mLength; 
    } 

    @Override 
    public Object instantiateItem(View container, int position) { 

     RelativeLayout v = new RelativeLayout(mContext); 

     View vi; // Creating an instance for View Object 
     LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (position == 0) {    
      vi = inflater.inflate(R.layout.diccionariu, null); 
     } 
     else if (position == 1) { 
      vi = inflater.inflate(R.layout.conxugar, null); 
     } 
     else { 
      vi = inflater.inflate(R.layout.traducir, null); 
     } 

     v.addView(vi); 

     //v.addView(t); 

     ((ViewPager) container).addView(v, 0); 

     startUpdate(container); 

     return v; 
    } 

    @Override 
    public void destroyItem(View container, int position, Object view) { 
     ((ViewPager) container).removeView((View) view); 
    } 

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

    @Override 
    public void finishUpdate(View container) {} 

    @Override 
    public void restoreState(Parcelable state, ClassLoader loader) {} 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

    @Override 
    public void startUpdate(View container) {} 

} 

非常感谢你

回答

7

为了得到当前的项目使用:

int itemId = ViewPager.getCurrentItem() 

有了,你可以从你的适配器

retreive实际查看
Adapter.getItem(itemId) 

您也可以使用监听器OnPageChangeListener

viewPager.setOnPageChangeListener(new OnPageChangeListener... 
4

编译&作品:

~~~

mPager.setOnPageChangeListener(new OnPageChangeListener() 
    { 
     @Override 
     public void onPageSelected(int position) 
     { 
       // if listener is set - when using an indicator, must update that here 
       mIndicator.setCurrentItem(position); 

       String msg = "onPageSelected - position: " + position; 
       Log.d("debug1", msg); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) {} 

     @Override 
     public void onPageScrolled(int position, float arg1, int arg2) {} 
    }); 
+1

'setOnPageChangeListener'现在已经过时了,但我们可以用'addOnPageChangeListener' /'removeOnPageChangeListener相反。 – k2col 2015-09-15 20:04:01