Исправлена ​​проблема с прокруткой представления в Holder в Android - PullRequest
0 голосов
/ 28 июня 2018

Я создал один адаптер повторного просмотра, в котором я заполняю объект держателя вида нажатием строки. Так что у меня всегда будет последний объект держателя вида всякий раз, когда я нажимаю на строку повторного просмотра.

Проблема - это всякий раз, когда я прокручиваю повторные вызовы представления повторного вызова, привязка представления держателя и значения моего держателя представления изменяют время выполнения без нажатия какой-либо строки

Я пробовал так много способов удерживать мой текущий объект в выбранной строке, но я не получаю это enter code here

Пожалуйста, помогите, если кто-либо сталкивался с этой проблемой

Я выполняю ниже работоспособного, и в то время я получаю разные значения держателя

private class SeekBarUpdaterRight implements Runnable {
        @Override
        public void run() {
            if (null != rightMusicPlayerHolder) {
                if (player != null) {
                    int curVolume = player.getCurrentPosition();
                   rightMusicPlayerHolder.seekMusicRight.setProgress(curVolume);
                    // int currentHour = curVolume / HOUR;
                    int currentMint = (curVolume % HOUR) / MINUTE;
                    int currentSec = (curVolume % MINUTE) / SECOND;
                    rightMusicPlayerHolder.txtDurationStartRight.setText(String.format("%02d:%02d", currentMint, currentSec));
                    rightMusicPlayerHolder.seekMusicRight.postDelayed(this, 100);
                    Log.print("==========rightMusicPlayerHolder=========" + rightMusicPlayerHolder.getAdapterPosition());
                }
            }
        }
    }

Заранее спасибо ..

1 Ответ

0 голосов
/ 28 июня 2018

OnBindViewHolder() вызывается всякий раз, когда что-то вызывает изменение вида, такое как прокрутка, открытие / закрытие клавиатуры, нажатие кнопки возврата или возврата и т. Д. Создайте глобальную переменную вашего класса ViewHolder и установите значение в вашем onClick(). например:

ViewHolder clickedViewHolder;

private void setClickedViewHolder(ViewHolder clickedViewHolder) {
    this.clickedViewHolder = clickedViewHolder;
}

private ViewHolder getClickedViewHolder() {
    return clickedViewHolder;
}

@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
    holder.rowView.setTag(holder);
    holder.rowView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setCurrentViewHolder((MyAdapter.ViewHolder) v.getTag());
        }
    });

    ViewHolder currClickedViewHolder = getClickedViewHolder();  // this is the last viewHolder clicked on.
}

И делай что хочешь с этим ViewHolder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...