Android-PullRefreshLayout
Introduction: 基于 SwipeRefreshLayout,通吃所有的 AbsListView、RecyclerView
Tags:
下拉刷新-上拉加载-底部加载更多-RecycleView-SwipeRefreshLayout-上拉-下拉-Android-PullRefreshLayout
基于SwipeRefreshLayout
下拉刷新、上拉加载。支持所有的AbsListView
、RecycleView
特点
- 在
layout
中使用,支持AbsListView
所有的 xml 属性 - 支持自动下拉刷新,什么用呢?比如进入界面时,只需要调用
autoRefresh()
方法即可,同时下拉刷新回调函数将会被调用。 - 上拉加载支持自定义
View
或设置加载文字、动画 - 轻松设置
Adapter
空数据视图,默认为TextView
支持更文字,也可自定义View
- 对于简单的界面,如只有
ListView
可以继承 app 包中Fragment
轻松搞定
效果图
使用
仔细看listSelector
属性,效果见sample
<com.mylhyl.prlayout.SwipeRefreshListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipeRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:listSelector="@drawable/selector_list"
tools:context=".app.ListViewXmlFragment" />
设置上拉加载,更多方法见 IFooterLayout
IFooterLayout footerLayout = swipeRefreshListView.getFooterLayout();
footerLayout.setFooterText("set 自定义加载");
footerLayout.setIndeterminateDrawable(getResources().getDrawable(R.drawable.footer_progressbar));
或
pr:footer_text="数据正在加载中"
pr:footer_indeterminate_drawable="@drawable/footer_progressbar"
自定义上拉加载
- 方式一:注意此方法必须在
setOnListLoadListener
之前调用
getSwipeRefreshLayout().setFooterResource(R.layout.swipe_refresh_footer);
- 方式二:xml 属性
pr:footer_layout="@layout/swipe_refresh_footer"
- 方式三:继承重写
getFooterResource()
方法
public class MySwipeRefreshGridView extends SwipeRefreshGridView {
@Override
protected int getFooterResource() {
return R.layout.swipe_refresh_footer;
}
}
设置 adapter 空数据视图文字
swipeRefreshListView.setEmptyText("数据呢?");
自定义 adapter 空数据视图
ImageView emptyView = new ImageView(getContext());
emptyView.setImageResource(R.mipmap.empty);
swipeRefreshGridView.setEmptyView(emptyView);
调用autoRefresh
自动刷新,那么注册ListView
长按事件怎么办?好办提供了方法getScrollView()
取出
又有问题了既然能取到ListView
那SwipeRefreshLayout
是不是也可以取到呢?
答案是肯定的,方法getSwipeRefreshLayout
取出,你可以随心所欲了,设置下拉圆圈的颜色、大小等。
关于更多公开方法见 ISwipeRefresh
使用 Gradle 构建时添加一下依赖即可:
compile 'com.mylhyl:pullrefreshlayout:1.2.3'
如果使用 eclipse可以点击这里下载 jar 包
但是由于jar
不能打包res
原因,将影响xml
属性的使用,手动拷贝attrs
到自己的项目中.
也可以clone
源码,然后在 eclipse 中用library
方式引用
下载 APK 体验
QQ 交流群:435173211
更新日志
1.0.0
- 初始版本
1.1.0
- 修改类访问权
1.2.0
- 优化内部业务逻辑
1.2.1
- 修复嵌套
ViewPage
引起的冲突
1.2.2
- 增加
attrs
属性 可在xml
中配置footer
参数
1.2.3
- 子视图上滑冲突方案由
OnScrollListener
改为重写canChildScrollUp