2013-05-08 8 views
5

È possibile modificare la posizione selezionata del filatore in qualcosa senza che venga chiamato il metodo onItemSelected?Come impostare l'oggetto Spinner senza onItemSelected ottenere chiamato

in pratica quello che sto cercando di fare è tornare alla voce selezionata precedentemente nella casella di selezione, poiché una di esse mostra una finestra di dialogo quando selezionata. Quando l'utente preme il pulsante Indietro, lo spinner mostra ancora che si trova nella posizione che mostra la finestra di dialogo quando è stata chiusa.

Quindi c'è un modo per evitare che venga richiamato quando si ripristina utilizzando spinner.setSelection(position) o c'è un modo per mantenere la posizione che mostra la finestra di dialogo da rimanere selezionato?

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) { 
    switch(arg2){ 
    case 0: 

     previousSelection = 1; 
     mNavButtonClick.onNavButtonClick(1); 

     break; 
    case 1: 
     previousSelection = 2; 
     mNavButtonClick.onNavButtonClick(2); 

     break; 
    case 2: 
     previousSelection = 3; 
     mNavButtonClick.onNavButtonClick(3); 
     break; 
    case 3: 
     previousSelection = 4; 
     mNavButtonClick.onNavButtonClick(4); 
     break; 
    case 4: 
     previousSelection = 5; 
     mNavButtonClick.onNavButtonClick(5); 
     break; 
    case 5: 
        //this case shows the dialog 
     mNavButtonClick.onNavButtonClick(6); 
     break; 
    default: 
     break; 
    } 
} 

finestra di dialogo è mostrata, l'utente fa clic sul pulsante di nuovo per chiudere la finestra e nel onDismiss io chiamo

spinner.setSelection(previousSelection); 

di tornare alla selezione precedente, ma questa ri-crea la vista ancora una volta, che io non voglio dal momento che sono già sul punto di vista voglio solo mostrare che sono in vista nello spinner

+0

prova ad aggiornare l'adattatore. – NarendraJi

+0

@NarendraDroidWorm che semplicemente ricostruirà la lista impostando la posizione di selezione su '0' che in realtà non è molto diverso dal chiamare' setSelection' sull'ultima posizione selezionata – tyczj

+0

pubblica il tuo codice attuale, il codice descriverà molto più delle parole – stinepike

risposta

0

AFAIK, non c'è modo di fermare la chiamata della funzione. MA, è possibile scegliere di non eseguire il codice nella funzione utilizzando un semplice caso (quando si utilizza setSelection) Controlla la risposta accettata qui:

Undesired onItemSelected calls

Problemi correlati