android-swipeRefreshLayout使用详解
来源:互联网 发布:微信和淘宝合作了 编辑:程序博客网 时间:2024/04/29 06:04
效果描述:
进入页面不刷新,swipeRefreshLayout不会显示出来的。
下拉就会出现刷新 icon:
如图
定制属于自己的刷新进度条:
api:
setColorSchemeColors (int... colors)
示例代码:
mSwipeLayout.setColorSchemeColors(Color.RED, Color.GREEN, Color.BLUE);
使用方法详解
模拟联网获取数据,然后停止刷新操作。涉及到EventBus跨进程传递数据。
1: 用户手动刷新,联网获取数据
mSwipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { /** * 告诉开发者开始刷新了。 */ @Override public void onRefresh() {// Toast.makeText(getContext(), "获取数据", Toast.LENGTH_SHORT).show(); new Thread() { @Override public void run() { super.run(); try { Thread.sleep(1000); EventBus.getDefault().post("new data is coming"); } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); } });
2:获取到数据停止刷新
@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(String msg) { mSwipeLayout.setRefreshing(false); }
在使用swipeRefreshLayout时遇到的坑:
需求:刚进入页面时刷新加载数据
通常的思路是给swipeRefreshLayout设置监听,然后调用刷新方法swipeRefreshLayout.setRefreshing(true)刷新,在onRefresh()方法里监听加载数据;
@Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mRecyclerView = (RecyclerView) view.findViewById(R.id.id_recycler_view_record); mRefresh = (SwipeRefreshLayout) view.findViewById(R.id.id_refresh); mRefresh.setOnRefreshListener(this); mRefresh.setRefreshing(true); } @Override public void onRefresh() { getDataFromNet(0); }
实践证明,并不会走监听方法;
改进思路:
一边刷新,一边实际去获取数据,刷新条只是障眼法,根据请求网络数据的情况,关闭刷新进度条;
@Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mRecyclerView = (RecyclerView) view.findViewById(R.id.id_recycler_view_record); mRefresh = (SwipeRefreshLayout) view.findViewById(R.id.id_refresh); mRefresh.setOnRefreshListener(this); initData(); } private void initData() { mRefresh.setRefreshing(true); getDataFromNet(0); }
0 0
- android-swipeRefreshLayout使用详解
- SwipeRefreshLayout的使用详解
- Android SwipeRefreshLayout 使用
- Android SwipeRefreshLayout的使用
- Android中SwipeRefreshLayout的使用
- android使用SwipeRefreshLayout下拉刷新
- android--UI--SwipeRefreshLayout的使用
- Android Material的SwipeRefreshLayout使用
- Android中SwipeRefreshLayout的使用
- Android中SwipeRefreshLayout的使用
- Android自带刷新插件SwipeRefreshLayout详解
- 解决Android SwipeRefreshLayout & RecyclerView使用的Bug
- Android 下拉刷新控件SwipeRefreshLayout 的使用
- 【Android】使用 SwipeRefreshLayout 实现下拉刷新
- 解决Android SwipeRefreshLayout & RecyclerView使用的Bug
- Android官方刷新组件 SwipeRefreshLayout 的使用
- Android SwipeRefreshLayout 下拉刷新组件的使用
- Android SwipeRefreshLayout 官方下拉刷新控件使用
- Lua 使用cjson解析json数据(Mac环境)
- 建模软件没有子物体导入unity出现子物体的原因
- Linux 下的用户权限操作
- 闭包理解
- Json的解析<一>
- android-swipeRefreshLayout使用详解
- C#跨线程获取控件的参数
- android:多渠道打包
- 错误2无效的 Resx 文件。根级别上的数据无效。 行 1,位置 1
- 防止网站数据采集但允许搜索引擎爬取的方法
- jQuery插件开发3之简单实例
- 深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
- 基于网络层的LTE(含EPC)网络常用类及其函数介绍
- virtio/vhost介绍