2012-02-21 14 views
5

Come si sblocca la possibilità di scorrere su una nuova pagina dopo aver fatto clic su un pulsante in una pagina precedente?Modifica del conteggio di ViewPager

Attualmente ho un PagerAdapter. Il codice seguente crea un'istanza dell'oggetto. All'interno di getCount(), viene restituito un valore di 3 e quindi vengono eseguite 3 diapositive. Mi chiedevo se esistesse un modo per avere solo 3 visualizzazioni, ma dopo aver fatto clic su un pulsante, sblocca una quarta vista a cui ora puoi scorrere?

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

C'è un modo per cambiare il:

public int getCount() { 
     return 3; 
    } 

Come un "setCount()" e quindi metterlo al // * codice * // per aumentare la quantità di diapositive?

Would aggiungendo

instantiateItem(collection,4); 

lavoro da qualche parte funziona?

Grazie,

risposta

6

Ecco come ho risolto questo problema. Per chiarire, come si fa clic su un pulsante e ottenere più pagine in cui è possibile scorrere. Ho fatto:

private int NUM_VIEWS = 2; 

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

e poi ho cambiato una linea importante.

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

mio clickListener è

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

ho aggiunto un altro caso per facilitare il nuovo elemento. Successivamente, quando clicco sul pulsante, il mio pageadapter si espanderà a 3 visualizzazioni invece di 2 e il nuovo caso sarà la nuova vista.

2

getCount di default restituisce il numero di visualizzazioni del vostro bambino ViewPager. Facendo pager.add(layout_item) puoi aggiungere un nuovo oggetto al cercapersone (ovviamente devi gonfiarlo da qualche parte prima). getCount si regolerà automaticamente.

+0

così ho provato ad aggiungere: (raccolta (ViewPager)) .addView (v1, 3); all'interno del listener dei clic ma non ha funzionato. Puoi dare qualche consiglio in più su come farlo? –

+0

Ho fatto un 'notifyDatasetChanged()' –

+0

ho provato ma si blocca. dovrei fare (raccolta (ViewPager)) .notifyDatasetChanged() tutto all'interno del listener dei clic. Inoltre è aggiunta o addview e su quale oggetto appartengono questi metodi, collezione? –

Problemi correlati