2012-02-21 14 views
5

Jak odblokować możliwość przesuwania do nowej strony po kliknięciu przycisku na poprzedniej stronie?Zmiana Licznika ViewPager

Obecnie mam PagerAdapter. Poniższy kod tworzy egzemplarz elementu. W metodzie getCount() zwracana jest wartość 3, a zatem tworzone są 3 slajdy. Zastanawiam się, czy istnieje sposób, aby mieć tylko 3 widoki, ale po kliknięciu przycisku odblokujesz 4. widok, do którego możesz teraz przejść?

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

Czy istnieje sposób, aby zmienić:

public int getCount() { 
     return 3; 
    } 

jak "setCount()", a następnie umieścić go w jakimś kodzie // * // * zwiększenie ilości slajdów?

Byłoby dodanie

instantiateItem(collection,4); 

praca gdzieś pracować?

Dzięki,

Odpowiedz

6

Oto jak rozwiązałem ten problem. Aby wyjaśnić, w jaki sposób klikasz przycisk i uzyskujesz więcej Stron, które można przewijać. Zrobiłem:

private int NUM_VIEWS = 2; 

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

, a następnie zmieniłem ważną linię.

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

Moja clickListener jest

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

dodałem kolejną sprawę ułatwić nowego elementu. Następnie, po kliknięciu przycisku, mój rozdział strony rozszerzy się do 3 widoków zamiast 2, a nowy przypadek będzie nowym widokiem.

2

getCount domyślnie zwraca liczbę widoków podrzędnych swojej ViewPager. Wykonując pager.add(layout_item) możesz dodać nowy element do pagera (oczywiście musisz go najpierw nadmuchać). getCount dostosuje się automatycznie.

+0

więc próbowałem dodać: (kolekcja (ViewPager)) .addView (v1, 3); w obrębie odbiornika kliknięć, ale nie zadziałało. Czy możesz dać trochę więcej porad, jak to zrobić? –

+0

Zrobiłeś 'notifyDatasetChanged()' –

+0

próbowałem, ale się zawiesił. zrobiłbym (kolekcja (ViewPager)) .notifyDatasetChanged() wszystko w odbiorniku kliknięcia. Czy jest to również add lub addview i do jakiego obiektu należą te metody, collection? –