如何解决更改视图持有人问题?



当我单击第 13 项时,它开始更改进度条。但是当我向上滚动时,第 4 项也显示它已更改。我尝试不设置可回收的假,但也遇到了问题。向上和向下滚动时,活动持有人消失了。我为这个问题生气了... 请帮帮我...

主活动

//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

我通过在适配器类中添加侦听器来解决这个问题。

适配器

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{
}
}

最新更新