2012-04-04 6 views
2

Ich möchte den Wert der Suchleiste anzeigen, wenn der Benutzer sie bewegt, ähnlich der Art und Weise, in der die Kontaktliste den Buchstaben des Abschnitts anzeigt, in dem Sie sich befinden (Android 2.3.x).Android: Zeigen Sie einen Toast in OnSeekBarChangeListener an?

Jeder hat einen Vorschlag, wie man es implementiert? Ich dachte ein Toast in onProgressChanged() Methode von OnSeekBarChangeListener, aber mit Schwierigkeiten, den Kontext tooth() Toast zu bekommen.

EDIT: Auch die Seekbar ist in einer Zeile eines ListView so OnSeekBarChangeListener ist in einer Klasse erweiternde ArrayAdapter und nicht die übliche "Aktivität" Dinge wie getBaseContext() sind nicht verfügbar für die Methode.

Antwort

1

können Sie:

Toast.makeText(Main.this, "Message", Toast.LENGTH_LONG).show(); 

oder

Toast.makeText(getBaseContext(), "Message", Toast.LENGTH_LONG).show(); 

Erste Möglichkeit: Verwenden Sie Application Klasse global

public class MyApp extends Application { 
    private static MyApp instance; 

    public static MyApp getInstance() { 
     return instance; 
    } 

    public static Context getContext(){ 
     return instance.getApplicationContext(); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     instance = this; 
    } 
} 

Zweiter Weg: Pass Context Ihrer Klasse Konstruktor oder zu eine Methode in Klasse

+0

Vergessen zu erwähnen, ich habe die Seekbar in einem Listenansicht, so dass der Listener in einer Klasse ArrayAdapter erweitert wird. Ich habe getBaseContext() nicht verfügbar. – wufoo

0

Danke für die Antworten. Ich benutzte ein wenig von beiden Vorschlägen und kam damit auf, aber selbst bei 500ms aktualisiert der Toast nicht schnell genug, um mit den seekBar-Änderungen Schritt zu halten. hm ...

public class adapListControl extends ArrayAdapter <String> 
{ 
    final Context mCtx; 
    ... 

    public adapListControl (Context context, int textViewResourceId) 
    { 
     super (context, textViewResourceId); 
     this.mCtx = context; 
    } 
    ... 

    OnSeekBarChangeListener osbl = new OnSeekBarChangeListener() 
    { 
     @Override 
     public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser) 
     { 
     Log.d (TAG, " prog change:" + progress); 
     Toast.makeText(mCtx, "" + progress, 500).show(); 
     } 
     ... 
    }