как решить проблему смены держателя представления? - PullRequest
0 голосов
/ 27 мая 2020

когда я нажимаю 13-й элемент, он начинает менять полосу выполнения. Но когда я прокручиваю вверх, то 4-й элемент также показывает, что он изменен. Я попытался не устанавливать повторно используемое значение false, но также возникла проблема. при прокрутке вверх и вниз активный держатель исчезает. Я схожу с ума из-за этой проблемы ... пожалуйста, помогите мне ...

MainActivity

   //ViewHolder Click Event
    override fun onClick(data: Any, holder: RecyclerView.ViewHolder) {
        currentFragment?.initRecord()
        val holderPosition = holder.adapterPosition // and tried data.id
        audioPosition=holderPosition
        activeHolder = holder
   }

  //onChangeProgressBar
  override fun onChangeProgressBar(progress: Float, currentPosition: Int, totalDuration: Int) {
        if(activeHolder?.adapterPosition == audioPosition) {
            activeHolder?.let {
                showLog("activeHolder : "+activeHolder?.adapterPosition)
                it.binding.progressBar.max = totalDuration
                it.binding.progressBar.progress = currentPosition
                showAudioStopButton(it)
            }
        }else{
            showLog("Position activeHolder.adapterPosition: "+activeHolder?.adapterPosition)
            showLog("Position audioPosition : "+audioPosition)
        }
    }


Адаптер

  override fun onBindViewHolder(holder: ViewHolder, position: Int, payloads : List<Any>) {
        val data: ReplyData = mGroupDataList[position]
        if (holder is GroupPopupViewHolder) {
            //holder.setIsRecyclable(false)
            if (holder is GroupPopupViewHolder) {
                holder.bind(mGroupDataList[position])
                holder.binding.audioLayout.setOnClickListener {
                    (onClickListener as AudioItemClickListener).onClick(
                        mGroupDataList[position], holder
                    )
                }
            }


        }
    }

Журнал

D/TAG: Position activeHolder.adapterPosition: 22
    Position audioPosition : 13

1 Ответ

0 голосов
/ 27 мая 2020

Я решил это, добавив слушателя при onBindViewHolder в класс адаптера.

Адаптер

add listener in adapter class
 (onClickListener as ViewHolderOnBindListener).onViewHolderBinded(holder)

активность

//Do what u want
    override fun onViewHolderBinded(holder: RecyclerView.ViewHolder?) {
        if(holder!!.adapterPosition==audioPosition){

        }else{

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