2012-02-21 25 views
5

¿Cómo desbloquea la capacidad de deslizarse a una página nueva después de hacer clic en un botón en una página anterior?Cambiar el conteo de ViewPager

Actualmente tengo un PagerAdapter. El código a continuación ejemplifica el artículo. Dentro de getCount(), se devuelve un valor de 3 y, por lo tanto, se crean 3 diapositivas. Me preguntaba si había una manera de tener solo 3 vistas, pero después de hacer clic en un botón, ¿desbloquear una 4ta vista a la que ahora puedes deslizar?

@Override 
    public Object instantiateItem(final View collection, int position) { 
     final LayoutInflater inflater = (LayoutInflater) TViewPager.this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     TextView tv = new TextView(TViewPager.this); 

//Describe the separate layouts of views 
switch (position) { 
     case 1: 
      View v1 = inflater.inflate(R.layout.expander2, null, false); 
       ((ViewPager) collection).addView(v1, 0); 
       final Button button = (Button) findViewById(R.id.button_click_me); 
       button.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v1) { 
         Toast.makeText(getBaseContext(), "+1", Toast.LENGTH_LONG).show(); 
         //*Some code*// 

        } 
       }); 
       return v1; 

¿Hay una manera de cambiar el:

public int getCount() { 
     return 3; 
    } 

Como un "setCount()" y luego se coloca en la // * * // algún código para aumentar la cantidad de diapositivas?

Would añadiendo

instantiateItem(collection,4); 

trabajo en alguna parte funciona?

Gracias,

Respuesta

6

Así es como he resuelto este problema. Para aclarar, ¿cómo hace clic en un botón y obtiene más páginas en las que puede desplazarse? Hice:

private int NUM_VIEWS = 2; 

public void setN(int N) { 
    this.NUM_VIEWS = N; 
} 

y luego cambié una línea importante.

@Override 
public int getCount() { 
    return NUM_VIEWS; 
} 

Mi clickListener es

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v1) { 
     myAdapter.setN(3); 
     myPager.setCurrentItem(2); 
     } 
}); 

añadí otro caso para facilitar el nuevo elemento. Luego, cuando hago clic en el botón, mi pageadapter se ampliará a 3 vistas en lugar de 2 y la nueva caja será la nueva vista.

2

getCount por defecto devuelve el número de niños vistas de su ViewPager. Al hacer pager.add(layout_item), puede agregar un nuevo elemento al busca (primero debe inflarlo en alguna parte). getCount se ajustará automáticamente.

+0

así que traté de agregar: (colección (ViewPager)) .addView (v1, 3); dentro del click listener pero no funcionó. ¿Puedes darnos un poco más de consejos sobre cómo hacer esto? –

+0

Hiciste un 'notifyDatasetChanged()' –

+0

Lo intenté pero se cuelga. ¿Qué debo hacer? ((ViewPager) collection) .notifyDatasetChanged() todo dentro del click listener. Además, ¿es add o addview y a qué objeto pertenecen estos métodos, collection's? –