检测ViewPager上的视图更改

ita*_*ika 3 android android-viewpager

我正在通过SwipeyTabsAdapter实现一个水平的ViewPager ViewPagerExtensions(com.astuetz.viewpager.extensions).换句话时有没有拦截?以同样的方式,我可以随时知道用户在什么视图中?

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) {}

}
Run Code Online (Sandbox Code Playgroud)

非常感谢你

Rap*_*lee 9

要获取当前项目:

int itemId = ViewPager.getCurrentItem()
Run Code Online (Sandbox Code Playgroud)

有了它,您可以从适配器中检索实际视图

Adapter.getItem(itemId)
Run Code Online (Sandbox Code Playgroud)

您也可以使用监听器 OnPageChangeListener

viewPager.setOnPageChangeListener(new OnPageChangeListener...
Run Code Online (Sandbox Code Playgroud)


Gen*_* Bo 5

编译和工作:

~~~

    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) {}
    });
Run Code Online (Sandbox Code Playgroud)

  • 现在不建议使用setOnPageChangeListener,但是我们可以改用addOnPageChangeListener / removeOnPageChangeListener。 (2认同)