Уведомить дочерний ресайклерИзмененный набор элементов во вложенном ресивереПросмотреть android - PullRequest
0 голосов
/ 05 апреля 2020

** Я хочу уведомить о том, что дочерний элемент утилизатора изменился после завершения загрузки, без уведомления всех dataSetChanged. **
класс ParentAdapter (частный слушатель val: (slug: String, position: Int) -> Unit, частный val childItemDownloadListener: (child: LearningDataResult, parentPosition: Int, childPosition: Int) -> Unit, частный val childItemClickListener: (child: LearningDataResult, позиция: Int) -> Unit): ImmutableRecyclerAdapter () {private var viewPool = RecyclerView.RecycledViewPool () lateinit var childAdapter: Переопределение childAdapter val itemLayoutId: Int = R.layout.content_learning

* 1003 1004 *}

class ChildAdapter (закрытый val childDownloadListener: (дочерний: LearningDataResult, позиция: Int) -> Единица, частный val childItemClickListener: (дочерний элемент: LearningDataResult, позиция: Int) -> Unit):

ImmutableRecyclerAdapter<LearningDataResult>() {
override val itemLayoutId: Int = R.layout.content_child_recycler_item

override var items: List<LearningDataResult> by Delegates.observable(emptyList()) { _, old, new ->
    autoNotify(old, new) { o, n -> o == n }
}


override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    holder.setIsRecyclable(false)
    val child = items[position]
    with(holder.itemView) {

        tv_learn_title.text = child.title
        iv_learn.load(child.skillLogo, R.drawable.ic_grey)

        tv_item_category.text = child.category
        val dir = File("/LevelUp/downloads")
        var fileName = "${child.uuid}"

        val file =
            Environment.getExternalStorageDirectory().path + dir
        val downloadItemData = File(file, fileName)

        if (downloadItemData.exists()) {

            iv_download.invisible()
            iv_downloaded.visible()
        }

        when (child.downloadStatus) {
            IDLE -> {
                download_progress.gone()
                iv_download.visible()
                iv_downloaded.gone()
            }
            DOWNLOADING -> {
                download_progress.visible()
                iv_download.invisible()
                iv_downloaded.invisible()
            }
            DOWNLOADED -> {
                download_progress.gone()
                iv_download.invisible()
                iv_downloaded.visible()
            }
        }
        iv_download.setOnClickListener {
            (holder.itemView.context as AppCompatActivity).askRequiredPermission(
                arrayOf(
                    Manifest.permission.WRITE_EXTERNAL_STORAGE
                )
            ) {
                download_progress.visible()
                iv_download.invisible()
                iv_downloaded.invisible()
                childDownloadListener.invoke(child, position)
            }
        }

        setOnClickListener {
            childItemClickListener.invoke(child, position)
        }
    }

}

}

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