Android智能下拉刷新框架-SmartRefreshLayout

SmartRefreshLayout以打造一个强大,稳定,成熟的下拉刷新框架为目标,并集成各种的炫酷、多样、实用、美观的Header和Footer。 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。 它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 SwipeRefreshLayout, 其他第三方的 Ultra-Pull-To-Refresh、TwinklingRefreshLayout 。 还集成了各种炫酷的 Header 和 Footer。

亲测效果如下:


布局:

<?xml version="1.0" encoding="utf-8"?>
<com.scwang.smart.refresh.layout.SmartRefreshLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/refreshLayout"android:layout_width="match_parent"android:layout_height="match_parent"><com.scwang.smart.refresh.header.ClassicsHeaderandroid:layout_width="match_parent"android:layout_height="wrap_content"/><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"android:overScrollMode="never"android:background="#fff" /><com.scwang.smart.refresh.footer.ClassicsFooterandroid:layout_width="match_parent"android:layout_height="wrap_content"/>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>

预览效果如下:

业务控制逻辑:

private void initView() {RefreshLayout refreshLayout = findViewById(R.id.refreshLayout);refreshLayout.setRefreshHeader(new ClassicsHeader(this));refreshLayout.setRefreshFooter(new ClassicsFooter(this));//设置是否在没有更多数据之后 Footer 跟随内容refreshLayout.setEnableFooterFollowWhenNoMoreData(true);refreshLayout.setOnRefreshListener(new OnRefreshListener() {@Overridepublic void onRefresh(RefreshLayout refreshlayout) {refreshlayout.finishRefresh(2000/*,false*/);//传入false表示刷新失败}});refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {@Overridepublic void onLoadMore(RefreshLayout refreshlayout) {refreshLayout.getLayout().postDelayed(() -> {refreshLayout.finishLoadMoreWithNoMoreData();//设置之后,将不会再触发加载事件Toast.makeText(getBaseContext(), "数据全部加载完毕", Toast.LENGTH_SHORT).show();}, 1000);}});//初始化列表和监听View view = findViewById(R.id.recyclerView);if (view instanceof RecyclerView) {RecyclerView recyclerView = (RecyclerView) view;recyclerView.setLayoutManager(new LinearLayoutManager(this));recyclerView.setItemAnimator(new DefaultItemAnimator());List<String> list=new ArrayList<>();MyRecyclerAdapter adapter= new MyRecyclerAdapter(this, ComingBean.createArray(20));recyclerView.setAdapter(adapter);}}

传送门:
码云
GitHub

小结:很早之前用过许多个这样的组件,自己也写过类似的组件。这个是维护比较好的,最近接手的项目用的组件有些bug不能满足项目需求。打算替换这个了。

【Android】下拉刷新上拉加载更多组件记录(81/100)相关推荐

  1. uni-app下拉刷新触底加载更多

    首先在pages.json 配置文件中配置    "enablePullDownRefresh": true  需要在哪用加载就配置在路由的style里 两个事件 //下拉刷新 o ...

  2. recyclerview的数据刷新(下拉刷新和自动加载更多)以及添加提示语(例如:“数据已加载完毕”)

    下拉加载更多的核心是SwipeRefreshLayout搭配Recyclerview进行使用.布局为 <android.support.v4.widget.SwipeRefreshLayout ...

  3. Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表

    本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...

  4. android listview下拉刷新动画,android 安卓 listview 支持下拉刷新 上拉加载更多

    [1]重写listViewimport java.text.SimpleDateFormat; import java.util.Date; import com.example.testdddlea ...

  5. Android ListView 实现下拉刷新上拉加载

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/39965327 1.简介 无疑,在Android开发中,ListView是使用非常频 ...

  6. android 列表上拉加载更多,Android 下拉刷新,上拉加载更多控件–支持ListView,GridView和ScrollView...

    麦洛遇到这样一个需求,实现类似于IOS下拉刷新,上拉加载更多的控件.麦洛google,baidu了一番,网上有不少实现,比较常见的是国外牛人的实现,不过国外的实现基本上都是扩展于ListView,所以 ...

  7. Android 下拉刷新上拉加载可以左右滑动

    下面是下拉刷新上拉加载可以左右滑动的实例,下面是效果图: GitHub 下载地址:https://github.com/wuqingsen/MySlidingNested CSDN 下载地址:http ...

  8. Android自定义控件实战——实现仿IOS下拉刷新上拉加载 PullToRefreshLayout

    下拉刷新控件,网上有很多版本,有自定义Layout布局的,也有封装控件的,各种实现方式的都有.但是很少有人告诉你具体如何实现的,今天我们就来一步步实现自己封装的 PullToRefreshLayout ...

  9. Android 下拉刷新上拉加载 多种应用场景 超级大放送(上)

    转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉加载,网上的Demo太多太多了,这 ...

最新文章

  1. mysql+dump+选项_mysqldump的几个主要选项探究
  2. hadoop mysql mybatis_MyBatis简介与配置MyBatis+Spring+MySql
  3. 《虚拟化与云计算》读书感(四)数据中心的设计和构造
  4. 告别AI模型黑盒子:可解释性将是数据科学的下一个“超能力”
  5. C++调用父类的构造函数规则
  6. jmh气象传真图网站_在冬奥滑雪场,他凭着气象信息,念好一本生意经
  7. 【复杂网络】复杂网络多种算法及工具应用集合
  8. 腾讯牛逼,我酸了!!
  9. 【Hello CSS】第六章-文档流与排版
  10. django传递URL到某个app的urls.py文件中
  11. iOS中如何添加自定义的字体库
  12. 自定义autograd function
  13. 【小程序-开篇】国内IT技术圈的技能树貌似点歪了?
  14. pdf文件太大如何压缩变小一点?
  15. doctrine2 mysql_doctrine2到底是个什么玩意
  16. 全面解析python类的绑定方法与非绑定方法
  17. 海量数据,3行Python代码直接获取!
  18. Android平台以WebView方式集成H5+SDK和支付宝登录授权插件开发思路总结
  19. 【产品】CNC工艺手板加工和模具区别详解
  20. Jhipster 中的 Liquibase 正确使用方法

热门文章

  1. Python利用matplot绘图
  2. 比武招亲(上)(思维+贡献法+组合数学隔板法详解)
  3. 安全运维之:Linux后门入侵检测工具的使用
  4. 语音识别技术的发展,未来有哪些值得期待?
  5. 管理感悟:扔掉坏苹果,换上好苹果
  6. css 鼠标滚动事件,js监听鼠标的滚轮滚动事件教程
  7. mysql 删除时间一个星期_解决mysql“Access denied for user #x27;root#x27;@#x27;localhost#x27;”...
  8. Virtual Hard Disk(VHD)文件格式详解
  9. CSPNet 论文学习
  10. 全网最火Java面试题大全1000+面试题附答案详解面试官说,看完稳了