我有一个列表视图,每个文本视图都应该显示搜索栏的值。我已经让它工作了,一旦为搜索栏调用 onStopTrackingTouch,我就会更新相应的文本视图。我希望在用户移动搜索栏时发生更改,但我在执行相同操作时遇到了麻烦,因为列表视图不会经常刷新。
实现这一目标的理想方法是什么?
所以这就是我所做的,我在 getView 之外定义了一个触摸侦听器,将其设置为 getview 中 seekbar 的 TouchListener。TouchListener 将视图作为参数返回,我得到了视图的父视图,然后对 tectview 进行了 findViewByID 搜索并对其进行了更新。
我找到了一种实现这种行为的方法,当我覆盖 ArrayAdapter 的getView()
方法时,我将 SeekBar 标记属性设置为当前项目的位置。onProgressChanged(...)
所以它可以帮助我在执行回调时提取相应的项目。同时它让我可以更新适配器中包含的对应对象。
sbProgress.setTag(position);
sbProgress.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
View view = (View) seekBar.getParent();
if(view != null){
TextView tvProgress = (TextView)view.findViewById(R.id.tv_porcentaje_numerico_obtenido);
tvProgress.setText(progress + "%");
MyAdapter.this.getItem((Integer)seekBar.getTag()).setProgres(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
这是一张解释我的意思的图片
我希望这对某人有帮助。