Example usage for android.support.v4.view ViewPager getParent

List of usage examples for android.support.v4.view ViewPager getParent

Introduction

In this page you can find the example usage for android.support.v4.view ViewPager getParent.

Prototype

public final ViewParent getParent() 

Source Link

Document

Gets the parent of this view.

Usage

From source file:com.momock.binder.container.ViewPagerBinder.java

public void onBind(final ViewPager view, final IDataList<?> dataSource) {
    if (view != null) {
        if (refIndicator != null && refIndicator.get() != null) {
            refIndicator.get().setCount(dataSource.getItemCount());
        }/* w ww. j av a  2s.  c om*/
        view.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                position = adapter instanceof IRoundAdapter
                        ? ((IRoundAdapter) adapter).getRealPosition(position)
                        : position;
                Object item = dataSource.getItem(position);
                ItemEventArgs args = new ItemEventArgs(view, position, item);
                itemSelectedEvent.fireEvent(view, args);
                if (refIndicator != null && refIndicator.get() != null) {
                    refIndicator.get().setCurrentIndex(position);
                }
            }

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageScrollStateChanged(int state) {
                viewPagerState = state;
            }
        });
        view.setOnTouchListener(new View.OnTouchListener() {
            GestureDetector detector = null;

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                view.getParent().requestDisallowInterceptTouchEvent(true);
                if (detector == null) {
                    detector = new GestureDetector(v.getContext(),
                            new GestureDetector.SimpleOnGestureListener() {

                                @Override
                                public boolean onSingleTapConfirmed(MotionEvent e) {
                                    Object item = dataSource.getItem(adapter instanceof IRoundAdapter
                                            ? ((IRoundAdapter) adapter).getRealPosition(view.getCurrentItem())
                                            : view.getCurrentItem());
                                    ItemEventArgs args = new ItemEventArgs(view, view.getCurrentItem(), item);
                                    itemClickedEvent.fireEvent(view, args);
                                    return true;
                                }

                            });
                }
                return detector.onTouchEvent(event);
            }
        });
        adapter = new PagerAdapter() {
            BlockingQueue<View> savedViews = new LinkedBlockingQueue<View>();

            @Override
            public int getCount() {
                return dataSource.getItemCount();
            }

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

            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View convertView = null;
                if (savedViews.size() > 0) {
                    convertView = savedViews.poll();
                }
                Object item = dataSource.getItem(position);
                if (convertView != null)
                    convertView.setTag(null);
                convertView = itemBinder.onCreateItemView(convertView, item, ViewPagerBinder.this);
                convertView.setTag(item);
                container.addView(convertView, 0);
                return convertView;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                savedViews.add((View) object);
                container.removeView((View) object);
            }

            long lastDataSetChangedTick = 0;

            @Override
            public void notifyDataSetChanged() {
                lastDataSetChangedTick = System.nanoTime();
                getDataChangedEvent().fireEvent(this, new EventArgs());
                if (refIndicator != null && refIndicator.get() != null) {
                    refIndicator.get().setCount(dataSource.getItemCount());
                }
                super.notifyDataSetChanged();
                Logger.debug("ViewPagerBinder.PagerAdapter.notifyDataSetChanged");
            }

            long updateTick = 0;

            @Override
            public void startUpdate(ViewGroup container) {
                updateTick = System.nanoTime();
                super.startUpdate(container);
            }

            @Override
            public void setPrimaryItem(ViewGroup container, int position, Object object) {
                super.setPrimaryItem(container, position, object);
            }

            @Override
            public void finishUpdate(ViewGroup container) {
                super.finishUpdate(container);
                if (lastDataSetChangedTick < updateTick)
                    lastDataSetChangedTick = 0;
            }

            @Override
            public int getItemPosition(Object object) {
                return lastDataSetChangedTick == 0 ? PagerAdapter.POSITION_UNCHANGED
                        : PagerAdapter.POSITION_NONE;
            }
        };
        if (round)
            adapter = new RoundPagerAdapter(adapter);
        view.setAdapter(adapter);
        dataSource.addDataChangedHandler(new IEventHandler<DataChangedEventArgs>() {

            @Override
            public void process(Object sender, DataChangedEventArgs args) {
                adapter.notifyDataSetChanged();
            }

        });
        if (round)
            view.setCurrentItem(Math.max(100, dataSource.getItemCount() * 100), false);
    }
}