2

我想在用户移动它时显示搜索栏的值,类似于联系人列表视图在滚动时显示您所在部分的字母的方式(Android 2.3.x)。

有人对如何实施它有建议吗?我正在考虑 OnSeekBarChangeListener 的 onProgressChanged() 方法中的 Toast,但无法获取显示() Toast 的上下文。

编辑:此外,Seekbar 位于 ListView 的一行中,因此 OnSeekBarChangeListener 位于扩展 ArrayAdapter 的类中,而不是通常的“Activity”,因此该方法无法使用 getBaseContext() 之类的东西。

4

2 回答 2

1

您可以使用 :

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

或者

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

Application第一种方式:全局使用类

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

第二种方式: 传递Context 给您的类构造函数或类中的方法

于 2012-04-04T21:29:06.317 回答
1

感谢您的回复。我从这两个建议中都使用了一点并想出了这个,但即使在 500 毫秒时,Toast 也没有足够快地更新以跟上 seekBar 的变化。嗯……

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();
      }
      ...
   }
于 2012-04-05T13:47:50.327 回答