我正在更改recyclerview,并希望在更新完成时得到通知。我读过How to know when the RecyclerView has finished laying down the items?,说您在回调中收到了addOnGlobalLayoutListener的通知,但是除非您添加最后一行,否则它被调用了太多次。
这是我尝试过的:
my_rv.viewTreeObserver.addOnGlobalLayoutListener {
calculate(myAdapter.getItems())
my_rv.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
为了编译最后一行,我的片段需要覆盖onGlobalLayout。我应该在onGlobalLayout中放什么?我从没见过那个回调函数。
答案 0 :(得分:0)
这是因为在您的计算方法中,您更改了布局,例如设置文本,设置图像资源等,因此在第一次调用时,您需要删除侦听器,以避免侦听下一个GlobalLayout事件。
最好在第一行中删除removeOnGlobalLayoutListener
my_rv.viewTreeObserver.addOnGlobalLayoutListener {
my_rv.viewTreeObserver.removeOnGlobalLayoutListener(this)
calculate(myAdapter.getItems())
}