我想在用户移动时显示搜索栏的值,类似于联系人ListView显示滚动时所在部分的字母的方式(Android 2.3.x)。
有人建议如何实施吗?我在OnSeekBarChangeListener的onProgressChanged()方法中考虑Toast但是在获取上下文以显示()Toast时遇到了麻烦。
编辑:此外,Seekbar位于ListView的一行中,因此OnSeekBarChangeListener位于类Extendending ArrayAdapter中,而不是通常的“Activity”,因此getBaseContext()等内容不可用于该方法。
答案 0 :(得分: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
传递给您的类构造函数或类
答案 1 :(得分:1)
感谢您的回复。我在这两个建议中都使用了一点并提出了这个建议,但即使在500毫秒时,Toast的更新速度也不足以跟上seekBar的变化。 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();
}
...
}