您的位置:首页 > 移动开发 > Android开发

[Android | RecyclerView] OnScrollListener() 参数说明 以及一些额外参数

2016-09-24 17:48 627 查看
昨天学习了慕课网上的ListView的异步加载适配器,异步或线程获取图片,图片的一级缓存,滑动时停止加载等优化。很强大,包括连接网络,json数据解析都是用的基础的东西,没用框架。很适合学习。地址:慕课网 . 然后整理了相关代码。传送门:下载

然后感觉想把这套东西放到新鲜的RecyclerView中,练习一下。但是RecyclerView太强大了。自由度很高。有些东西包括LinearLayoutManager都需要自己加载。本文使用的
RecyclerView.OnScrollListener()
就是对应的 ListView的
AbsListView.OnScrollListener
。有很多地方发生了改变。所以需要记录下。

在RecyclerView的RecyclerView.Adapter< ViewHolder>适配器中的构造方法里。

构造方法:

public MyAdapter(Context context, List<ImoocBean> list, RecyclerView recyclerView) {

context.getTheme().resolveAttribute(
R.attr.selectableItemBackground, new TypedValue(), true);
//传递context
this.context = context;
//传递数据
this.mList = list;
//使用传过来的RecyclerView设置滚动监听
recyclerView.addOnScrollListener( ...);

// ...... do other things
}


使用
recyclerView.addOnScrollListener();
设置监听器,而不是
setOnScrollListener()
, 这个方法已经被舍弃了。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);

//dx为RecyclerView沿着X轴(横向)滑动时偏移量.
//正数为正向滑动(向右)偏移量,负数为反向滑动(向左)偏移量

//dy为RecyclerView沿着y轴(纵向)滑动时偏移量.
//正数为正向滑动(向下)偏移量,负数为反向滑动(向上)偏移量

Log.e("tag", "onScrolled: ---------- dx:"+dx+" dy:"+dy);
RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();
//firstVisibleItem 为RecyclerView 可见的第一item的position
int lastVisibleItem = ((LinearLayoutManager) manager).
findLastVisibleItemPosition();

//lastVisibleItem 为RecyclerView 可见的最后一个item的position
int firstVisibleItem = ((LinearLayoutManager) manager).
findFirstVisibleItemPosition();

//visibleItemCount 为RecyclerView 当前可见item的数量
int visibleItemCount = manager.getChildCount();

//totalItemCount 为RecyclerView 的所有item的总数量
int totalItemCount = manager.getItemCount();

Log.e("test", "onScrolled: ------- firstVisibleItem:" +firstVisibleItem
+" lastVisibleItem: " +lastVisibleItem
+" visibleItemCount: "+visibleItemCount
+" totalItemCount: " +totalItemCount);

// ...... do
}
});


其中一段log信息:

//..............

09-24 16:50:27.751 11872-11872/com.neusoft.lic.imoocrecyclerview E/test: onScrolled: ------- firstVisibleItem:9 lastVisibleItem: 15 visibleItemCount: 7 totalItemCount: 20
09-24 16:50:27.771 11872-11872/com.neusoft.lic.imoocrecyclerview E/tag: onScrolled: ---------- dx:0 dy:-78
09-24 16:50:27.771 11872-11872/com.neusoft.lic.imoocrecyclerview E/test: onScrolled: ------- firstVisibleItem:8 lastVisibleItem: 15 visibleItemCount: 8 totalItemCount: 20
09-24 16:50:27.781 11872-11872/com.neusoft.lic.imoocrecyclerview E/tag: onScrolled: ---------- dx:0 dy:-92
09-24 16:50:27.786 11872-11872/com.neusoft.lic.imoocrecyclerview E/test: onScrolled: ------- firstVisibleItem:8 lastVisibleItem: 15 visibleItemCount: 8 totalItemCount: 20
09-24 16:50:27.801 11872-11872/com.neusoft.lic.imoocrecyclerview E/tag: onScrolled: ---------- dx:0 dy:-83
09-24 16:50:27.801 11872-11872/com.neusoft.lic.imoocrecyclerview E/test: onScrolled: ------- firstVisibleItem:8 lastVisibleItem: 14 visibleItemCount: 7 totalItemCount: 20
09-24 16:50:27.816 11872-11872/com.neusoft.lic.imoocrecyclerview E/tag: onScrolled: ---------- dx:0 dy:-78

//..............
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android
相关文章推荐