Слушайте, как ViewHolders в RecyclerView перерабатывается - PullRequest
0 голосов
/ 10 июля 2020

Можно ли зарегистрировать слушателя с RecyclerView, чтобы я мог получать уведомления всякий раз, когда представление в ViewHolder переработано т.е. onBindViewHolder(~) вызвано?

I не имеют возможности изменять RecyclerView или подключенный адаптер (если он есть).

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете использовать лямбда-функцию в конструкторе адаптера и прослушивать метод onViewRecycled ListAdapter или RecyclerView.Adapter

class MyAdapter(val onViewRecycled:(Int) -> Unit) :
        ListAdapter<Any, CustomViewHolder>(AnyDiffCallback()) {



    override fun onViewRecycled(holder: CustomViewHolder) {
        super.onViewRecycled(holder)
        onViewRecycled(holder.absoluteAdapterPosition)
        
    }
}

Если вы не можете получить доступ к адаптеру, вы можете использовать addOnChildAttachStateChangeListener с RecyclerView

recyclerView.addOnChildAttachStateChangeListener(object:
            RecyclerView.OnChildAttachStateChangeListener {
            override fun onChildViewDetachedFromWindow(view: View) {

            }

            override fun onChildViewAttachedToWindow(view: View) {

            }

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