dcanh121 dcanh121 - 3 months ago 34
Android Question

Set default page for ViewPager in Android

I am using the following code, MAX is 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 the page1 when the app starts and add a new page to the left ?
Thanks.

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;
}

}

Answer

Have you tried using the setCurrentItem method?