如何正确地获取RecyclerView当前可视Item位置信息与getChildAt的一些思考
解决思路:根据Scroll事件,通过LayoutManager获取对应的位置信息
mRvCouponList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == SCROLL_STATE_IDLE || newState == SCROLL_STATE_DRAGGING) {
// DES: 找出当前可视Item位置
RecyclerView.LayoutManager layoutManager = mRvCouponList.getLayoutManager();
if (layoutManager instanceof LinearLayoutManager) {
LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager;
mFirstVisiblePosition = linearManager.findFirstVisibleItemPosition();
mLastVisiblePosition = linearManager.findLastVisibleItemPosition();
}
}