RecycleView使用
最近写RecycleView时,遇到一个问题,那就是在滑动RecycleView之后播放当前可视item中的视频,
那么问题来了,到底如何判断哪一个item在屏幕中,并且获取holder。
RecycleView有一个滑动监听
mVideoRecycle.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
//RecycleView的滑动事件状态,
//RecyclerView.SCROLL_STATE_IDLE为停止滑动
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
只需要在
onScrollStateChanged方法中加入逻辑就可以
private int firstView = 0;
private int lasttView = -1;
mVideoRecycle.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
firstView = mLayoutManager.findLastVisibleItemPosition() - 1;
if (firstView < 0) {
firstView = 0;
}
if (newState == RecyclerView.SCROLL_STATE_IDLE && firstView != lasttView) {
lasttView = firstView; //得到要更新的item的view
LiveHolder viewHolderForAdapterPosition = ((LiveHolder) mVideoRecycle.findViewHolderForAdapterPosition(lasttView));
//这里得到hodel, 就可以做想做的事了 } }
@Override
public void onScrolled (RecyclerView recyclerView,int dx, int dy){
super.onScrolled(recyclerView, dx, dy);
}
});