2011-09-13 7 views
55

Estoy usando el siguiente código, MAX es de 2 páginas. Por defecto, la posición es 0 y agrega una nueva página a la derecha. Inflando dos archivos de diseño.Establecer la página predeterminada para ViewPager en Android

¿Cómo puedo mostrar la página1 cuando se inicia la aplicación y agregar una nueva página a la izquierda? Gracias.

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> 

código Java

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

} 

Respuesta

115

¿Ha intentado utilizar el método setCurrentItem?

+0

Eso funciona. Gracias. – dcanh121

-1

Esta solución ofrece la posibilidad de configurar la página predeterminada sin interferencias externas a la clase de adaptador del Buscapersonas.

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

La solución aceptada está bien, pero es importante llamar a este método después de configurar el adaptador.

viewPager.setAdapter(adapterViewPager); 
    viewPager.setCurrentItem(1); 
4

De forma predeterminada, debe establecer el valor actual 1 para mostrar la única vista predeterminada. Si no establece setCurrentItem en 1, no podrá ver nada.

viewPager.setAdapter(adapterViewPager); 
viewPager.setCurrentItem(1) 
Cuestiones relacionadas