запутался в использовании viewTreeObserver.addOnGlobalLayoutListener - PullRequest
0 голосов
/ 02 июня 2019

Я изменяю просмотрщик и хочу получить уведомление о завершении этого обновления. Я прочитал Как узнать, когда RecyclerView завершил установку элементов? , что вы получаете уведомление в обратном вызове addOnGlobalLayoutListener, но это вызывается слишком много раз, если вы не добавите последнюю строку.

Вот что я попробовал:

my_rv.viewTreeObserver.addOnGlobalLayoutListener {
     calculate(myAdapter.getItems())
     my_rv.viewTreeObserver.removeOnGlobalLayoutListener(this)
}

, чтобы скомпилировать последнюю строку, мой фрагмент должен переопределить onGlobalLayout. Что я должен положить в GlobalLayout? Я никогда не вижу, чтобы этот звонок даже позвонил.

1 Ответ

0 голосов
/ 02 июня 2019

Это потому, что в вашем методе расчета вы меняете макет, например, текст, настройки ресурса изображения и т. Д., Поэтому при первом вызове вам нужно удалить прослушиватель, чтобы избежать прослушивания следующих событий GlobalLayout.

и лучше удалить removeOnGlobalLayoutListener в первой строке:

my_rv.viewTreeObserver.addOnGlobalLayoutListener {
 my_rv.viewTreeObserver.removeOnGlobalLayoutListener(this)
 calculate(myAdapter.getItems())
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...