2013-04-13 10 views
6

I "sto cercando di aggiungere l'onValueChangeListener al mio numero di picker (NP1) in Android 4.2.2.Implementazione OnValueChange ad un NumberPicker in Android

Ecco quello che ho finora

public class main extends Activity { 
ViewFlipper vf = null; 
HttpClient client = null; 
private ArrayList<String> captionList = new ArrayList<String>(); 
ListView lv = null; 
private String custid = null; 
ImageView iv = null; 
private int vfloginview = 0; 
private int vflistview = 0; 
private boolean vfsentinal = false; 
NumberPicker np1 = null; 
TextView totalcost = null; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mystuffmobile); 
    vf = (ViewFlipper) findViewById(R.id.vf); 
    client = new DefaultHttpClient(); 
    lv = (ListView) findViewById(R.id.lv); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    np1 = (NumberPicker) findViewById(R.id.np1); 
    np1.setMinValue(1); 
    np1.setMaxValue(400); 
    //np1.setOnValueChangedListener;  
    //np1.setOnValueChangedListener(onValueChange); 

} 

per cercare di testare la funzionalità è Sto usando questo

public void onValueChange (NumberPicker np1, int oldVal, int newVal) { 
    Log.v("NumberPicker", np1.getValue() +""); 
} 

qualcuno sa un modo semplice per implementare questo ascoltatore con avere la mia attività principale implementare NumberPicker.OnValueChangeListener?

Nota: l'unica ragione per cui sono contraria all'idea che la mia attività principale implementa NumberPicker.OnValueChangeListener è perché devo impostare main come abstract e la mia applicazione non verrà eseguita.

risposta

11

Lo farai proprio come un ascoltatore di clic su un pulsante.

np1.setOnValueChangedListener(new OnValueChangeListener() { 
    @Override 
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
     // do something here 
    } 
}); 

Un esempio completamente funzionante può essere trovato qui: http://samplecodez.com/android/numberpicker.php

Alcuni punti stilistici ...

  • principale dovrebbe essere capitalizzata ed è una buona pratica per renderlo più descrittivo come MainActivity.
  • Utilizzare i campi solo se necessario. Suppongo che tu non stia utilizzando la maggior parte di queste variabili al di fuori di onCreate(), quindi crea le variabili locali.
  • TextView totalCost è la variabile con il miglior nome del lotto :) Prendi in considerazione l'utilizzo di nomi dettagliati. Ti ringrazierai per 6 mesi quando torni a guardare questo codice per la prima volta da molto tempo.
  • Nessun valore magico (o stringhe)! Crea una costante per i tuoi valori min e max e quelli dovrebbero essere int finali statici privati ​​con i tuoi campi.
  • Nella configurazione Eclipse le azioni di salvataggio java nelle preferenze consentono di formattare automaticamente tutte le linee di codice quando si salva.

Naturalmente nessuna di queste cose farà funzionare meglio il codice, ma sicuramente sarà più facile da leggere.

+0

Bill Mote sei un genio. Grazie per il tuo tempo!!! Hai appena fermato un'ora di risoluzione dei problemi !! – TheMcMurder

+1

Siamo stati tutti lì. Fidati di me;) Quando guardo indietro ad alcune delle mie prime domande, sono abbastanza spaventato dal fatto che siano ancora lì per il consumo pubblico! –

+0

Hahahahaha grazie ancora. Apprezzo anche i puntatori di stile. È passato molto tempo da quando ho preso una lezione di codice e ho dimenticato un sacco di cose del genere. Ho implementato alcuni dei suggerimenti. – TheMcMurder

Problemi correlati