我遇到RecyclerView.OnScrollListener
的问题,快速滚动时调用onScrolled
事件的速度不够快。在滚动期间的任何给定时间,我都需要知道RecyclerView
中的第一个可见元素,以便根据从该元素获取的信息在Canvas
上进行绘制。但是,快速滚动时,大多数事件都将丢失。但是,如果RecyclerView
以明显较低的速度滚动,则没有问题。我尝试了其他与滚动相关的事件,但是没有运气。
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val position = (recyclerView.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
val shotMapItem = shotMapAdapter.dataSource?.get(position)
viewModel?.let{
it.updateShotInfo(shotMapItem)
if (shotMapItem is ShotVm) {
set.add(position)
val team = if (shotMapItem.isHomePlayerShot) 0 else 1
shotMap.drawShot(shotMapItem.shotX, shotMapItem.shotY, team, shotMapItem.isGoal, shotMapItem.isReversed)
}
}
}
})