У меня есть представление списка, где каждое текстовое представление должно показывать значение поисковой строки. У меня есть такая работа, что после вызова onStopTrackingTouch для поиска я обновляю соответствующий текст. Я хотел бы, чтобы изменения произошли, когда пользователь перемещает поисковый барьер, но у меня возникают проблемы с тем же, что и список, который часто не обновляется.
Каким будет идеальный метод для достижения этого?
Итак, вот что я сделал, я определил прослушиватель прикосновений вне getView, установил его как TouchListener для поиска в режиме просмотра. TouchListener возвращает представление в качестве аргумента, я получил родительский вид и выполнил поиск findViewByID для tectview и обновил его.
Я нашел способ добиться такого поведения, когда я переопределяю метод 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) {}
});
Вот изображение, которое объясняет, что я имею в виду
Я надеюсь, что это может быть полезно кому-то.