Как мне обновить все содержимое представления переработчика до значений по умолчанию, включая значки, на которых они находятся, кроме текущей позиции - PullRequest
0 голосов
/ 24 октября 2018

У меня есть приложение, в котором по щелчку элемента я обновляю фоновое изображение в окне просмотра в адаптере.Однако я хочу сделать это так, чтобы при нажатии на один элемент все остальные элементы возвращались к изображениям по умолчанию (что-то вроде переключения назад).Скажем, у меня есть кнопка воспроизведения на элементе 1, и я нажимаю на нее, она переключается на паузу, затем я нажимаю на элемент 2, и она переключается на паузу, и первая кнопка в элементе 1 переключается обратно на кнопку воспроизведения.Есть ли способ сделать это в режиме рециркуляции?

Вот мой код в onclick:

@Override
                public void onClick(View v) {

                    if (mediaPlayer != null && mediaPlayer.isPlaying()) {

                        if(!tracks.get(getAdapterPosition()).getMediaUrl().equals(currenturl) ){
                            mediaPlayer.stop();
                            mediaPlayer.release();

                            mediaPlayer = new MediaPlayer();


                            currenturl = tracks.get(getAdapterPosition()).getMediaUrl();
                            currentposition = getAdapterPosition();
                            playAudio(tracks.get(getAdapterPosition()).getMediaUrl());


                        }

Я хочу обновить изображение, на которое щелкнули в данный момент, так, чтобы

mediaUrl.setBackgroundResource(android.R.drawable.ic_media_pause);

для текущего элемента, но возвращается к

mediaUrl.setBackgroundResource(android.R.drawable.ic_media_play);

для предыдущего нажатого элемента или может быть обновлено до значения по умолчанию для всех других элементов в представлении повторного использования.Есть идеи, как это сделать проще всего?Спасибо!

1 Ответ

0 голосов
/ 24 октября 2018

создать переменную внутри вашего адаптера просмотра повторяющихся предметов itemselected = "номер текущего выбранного элемента".в привязке viewHolder проверьте itemSelectedIndex и примените стиль соответствующим образом.

Создайте onClickListener для события, в котором вы хотите выбрать какой-либо элемент.В onClick установите itemSelectedIndex = "номер элемента, который был нажат".И затем вызовите (также в том же методе) notifyDataSetChahged.

Это сделает работу.notifyDataSetChanged заставит ваш просмотрщик перерисовать весь элемент.И, поскольку «выбранное» представление также будет применено к элементу itemSelectedIndex, другие станут невыбранными.

Чтобы повысить производительность этого решения, вы можете захотеть ввести два индекса: itemSelected itemSelectedPrevious.В этом случае в onClick выполните:

itemSelectedPrevious = itemSelected
itemSelected = "index of current clicked item"
notifyItemChanged(itemSelectedPrevious)
notifyItemChanged(itemSelected)

, в этом случае вы избежите перерисовки всего представления recycleradapter, но обновите только ранее выбранный элемент, чтобы изменить его состояние на невыбранный, а такжетекущий элемент должен быть активным.

Надеюсь, это поможет:)

...