Sunday, 6 July 2014

Android ViewPager

ViewPager is nothing but horizontal scroller for entire screens.

  1. Lets begin from xml. Add ViewPager in your xml file. You can copy following code.
    <android.support.v4.view.ViewPager
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/your_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
        
  2. Now move to java file(Activity) create instance for ViewPager added in xml. Make sure this Activity extending FragmentActivity not Activity
    mPager = (ViewPager) findViewById(R.id.your_pager);
  3. Now create adapter for pager, create pager instance
    ViewPager mPager;
    PagerAdapter mPagerAdapter;
    public static String [] pageItem = new String[]{"Page 1","Page 2","Page 3"};
     
  4. Initialize adapter object and set adapter to ViewPager.
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mPagerAdapter);
  5. Create slider class which should extend FragmentStatePagerAdapter or FragmentPagerAdapter.
    private class ScreenSlidePagerAdapter extends 
        FragmentStatePagerAdapter 
    {
    public ScreenSlidePagerAdapter(FragmentManager fm) {
     super(fm);
    }
    
    @Override
    public Fragment getItem(int position) {
            //
     return new MyFragment(position);
    }
    
    @Override
    public int getCount() {
     return pageItem.length;
    }
    }
  6. Create fragment which will display each screen. It will be slided horizontally.
    public class MyFragment extends Fragment {
     TextView textView;
     int position = 0;
     public MyFragment(int position)
     {
      this.position = position;
     }
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            ViewGroup rootView = (ViewGroup) inflater.inflate(
                    R.layout.my_screen_fragment, container, false);
            
            textView = (TextView)rootView.findViewById(R.id.my_page_tv);
            textView.setText(activityClassObject.pageItem[position]);
            return rootView;
        }
    }
    

No comments:

Post a Comment