Обновить панель поиска + текстовое представление в виде списка

1

У меня есть представление списка, где каждое текстовое представление должно показывать значение поисковой строки. У меня есть такая работа, что после вызова onStopTrackingTouch для поиска я обновляю соответствующий текст. Я хотел бы, чтобы изменения произошли, когда пользователь перемещает поисковый барьер, но у меня возникают проблемы с тем же, что и список, который часто не обновляется.

Изображение 174551

Каким будет идеальный метод для достижения этого?

Теги:
textview
listview
seekbar

3 ответа

1
Лучший ответ

Итак, вот что я сделал, я определил прослушиватель прикосновений вне getView, установил его как TouchListener для поиска в режиме просмотра. TouchListener возвращает представление в качестве аргумента, я получил родительский вид и выполнил поиск findViewByID для tectview и обновил его.

  • 0
    что произойдет, если в вашем списке больше 15 строк?
  • 0
    Работает нормально :-)
Показать ещё 4 комментария
1

Я нашел способ добиться такого поведения, когда я переопределяю метод 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) {}

        });

Вот изображение, которое объясняет, что я имею в виду Изображение 174551

Я надеюсь, что это может быть полезно кому-то.

  • 0
    Ваше решение работает отлично. У меня вопрос: я использовал свой адаптер для получения этой функциональности, я запустил все фрагменты кода, кроме MyAdapter.this.getItem ((Integer) seekBar.getTag ()). SetProgres (progress); .setprogress не может быть решен андроид студией. Я думаю, что обновлю свой метод getIem, но я не могу сделать обновление. Можете ли вы показать свой метод getItem для меня.
1

Вы можете позвонить notifyDataSetChanged

on OnSeekBarChangeListener

Надеюсь на эту помощь.

  • 0
    Я попробовал, но кажется, что он отвлекает внимание от панели поиска, из-за которой пользователь не может искать
  • 1
    Хорошо, понял. Я попробовал эту вещь в моем адаптере и вызвал setOnSeekBarChangeListener в методе getView для каждого seekBar. Извините за плохое форматирование кода, не знаю, как это сделать в комментарии. Надеюсь, что это ответ на ваш вопрос. public void onProgressChanged (SeekBar seekBar, int progress, логическое значение fromUser) {TextView mProgressText = (TextView) ((View) seekBar.getParent ()). findViewById (R.id.progress); mProgressText.setText (progress + ""); }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню