Set default page for ViewPager in Android

I use the following code, MAX - 2 pages. By default, the position is 0 and adds a new page to the right. I inflate two layout files.

How can I show page1 when the application starts and add a new page to the left? Thank.

main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <android.support.v4.view.ViewPager android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pagerView" /> </LinearLayout> 

Java code

 public class MyPagerActivity extends Activity { private Context context; private int pageNumber; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); context = this; ViewPager pagerView = (ViewPager)findViewById(R.id.pagerView); pagerView.setAdapter(new AwesomePagerAdapter()); } private class AwesomePagerAdapter extends PagerAdapter{ @Override public void destroyItem(View collection, int position, Object view) { ((ViewPager) collection).removeView((View)view); } @Override public void finishUpdate(View arg0) { //setPageTitles(getPageNumber()); } @Override public int getCount() { return 2; } @Override public Object instantiateItem(View collection, int position) { /* TextView tv = new TextView(MyPagerActivity.this); tv.setText("Bonjour PAUG " + position); tv.setTextColor(Color.WHITE); tv.setTextSize(30); ((ViewPager) collection).addView(tv,0); return tv;*/ View view = getViewToShow(position); ((ViewPager) collection).addView(view,0); return view; } @Override public boolean isViewFromObject(View view, Object object) { return view==((View)object); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { // TODO Auto-generated method stub } @Override public Parcelable saveState() { // TODO Auto-generated method stub return null; } @Override public void startUpdate(View arg0) { // TODO Auto-generated method stub } } private View getViewToShow(int position){ View view = null; View layout; LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); switch(position){ case 0: layout = mInflater.inflate(R.layout.elements, null); view = layout; break; case 1: view = layout = mInflater.inflate(R.layout.elements2, null); view = layout; break; } return view; } } 
+63
android animation android-viewpager swipe
Sep 13 2018-11-11T00:
source share
5 answers

Have you tried using the setCurrentItem method?

+120
Sep 13 '11 at 0:50
source share

The decision made is fine, but it is important to configure this method after configuring the adapter.

  viewPager.setAdapter(adapterViewPager); viewPager.setCurrentItem(1); 
+51
Mar 19 '15 at 3:13
source share

By default, you need to set the current value to 1 to display only one default view. If you did not set setCurrentItem to 1, you will not see anything.

 viewPager.setAdapter(adapterViewPager); viewPager.setCurrentItem(1) 
+6
Sep 22 '16 at 0:40
source share

You should set the page only during the first fragment initialization. Later, it will restore the user-selected position from the "saved instance state". So it looks a little better:

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) pager.adapter = AwesomePagerAdapter() if (savedInstanceState == null) { pager.currentItem = 1 } } 
0
Jul 15 '19 at 14:18
source share

This solution makes it possible to set the default page without interference outside the Pager adapter class.

 @Override public Object instantiateItem(ViewGroup container, int position) { View currentPage = null; switch(position){ case 0: currentPage = LayoutInflater.from(context).inflate(R.layout.page0, null) break; case 1: currentPage = LayoutInflater.from(context).inflate(R.layout.page1, null) ///////////// This page will be default //////////////////// ((ViewPager)container).setCurrentItem(position); //////////////////////////////////////////////////////////// break; case 2: currentPage = LayoutInflater.from(context).inflate(R.layout.page2, null) break; return currentPage; } 
-one
02 Sep '14 at 10:37
source share



All Articles