Как обновить только определенный c вид элемента списка? - PullRequest
2 голосов
/ 22 января 2020

У меня есть список , в котором каждый элемент имеет индикатор выполнения , который обновляется каждую секунду, поэтому я использовал notifyDataSetChanged(), чтобы обновить каждый элемент списка , в этом состоянии все в порядке, но у меня также есть кнопка для этого элемента списка, который имеет setOnClickListener, так как просмотр списка notifyDataSetChanged() вызывает каждую секунду, нажатие этой кнопки не работает.

Итак, могу ли я обновить только этот ProgressBar ? не весь itemView ?

или какое-либо решение для решения этой проблемы?

CODE

private fun createDownloadingItemView(video: Video): View {
    val view = UIHelper.createLayout(this@DownloadManagerPage, R.layout.layout_downloading_item)
    view.downloadProgressBar.progress = video.downloadProgress

    view.deleteFileImageView.setOnClickListener {
        showDeleteDialog(video)
    }

    return view
}

Интерфейс

override fun onDownloadChanged(progressPercent: Int) {
    downloadFiles = Gson().fromJson<ArrayList<Video>>(
        ValueDB.downloadFiles,
        object : TypeToken<List<Video>>() {}.type
    )

    downloadingFiles.clear()
    downloadingFiles.addAll(downloadFiles.filter { downloadFile -> downloadFile.isDownloading })

    downloadingAdapter?.notifyDataSetChanged()
}
...