下拉刷新和上拉加载更多,从设计层面上来说,就不是同一个层面上的,从Google官方推出的下拉刷新控件SwipeRefreshLayout就可以看出。
一般来说,下拉刷新是以包裹整个列表控件的容器来实现的,而上拉加载更多是以列表控件的一部分扩展(footerView)来实现的。
下拉刷新
- Google官方的SwipeRefreshLayout
xml中控件初始化:<android.support.v4.widget.SwipeRefreshLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"/></android.support.v4.widget.SwipeRefreshLayout>
java类中实现
- 使用第三方下拉刷新控件,可以更好地支持自定义下拉样式。
这里推荐一个比较好的第三方控件:android-Ultra-Pull-To-Refreshcompile 'in.srain.cube:ultra-ptr:1.0.10'
xml中控件初始化:
java类中实现:
上拉加载更多
以列表控件的一部分扩展实现,这里以RecyclerView为例,新建一个类LoadMoreRecyclerView,继承至RecyclerView,主要的功能就是实现加载更多逻辑和显示控件:
上面出现的SuperAdapter是使用了一个第三方封装的万能Adapter,同时支持ListView和RecyclerView,个人感觉比鸿洋大神封装的万能Adapter要好一些,但是基本原理都是一样的。原理可以看他们各自的文章介绍,已经写的很详细了,这里就不多说了。
http://www.jianshu.com/p/d6a76fd3ea5b
http://blog.csdn.net/lmj623565791/article/details/38902805
http://blog.csdn.net/lmj623565791/article/details/51118836
关于分页加载
伴随着上拉加载更多功能的,往往是分页加载,关于分页加载的页数是在列表控件内部自动控制?还是在列表控件外部自己控制?我个人认为应该放在列表控件外部自己来控制页数,因为这个页数不光是在上拉加载更多时会使用到,在下拉刷新的时候也会使用到,并且对页数需要清零。
这里提供一种在列表控件外部控制页数的实现逻辑:
参考:
https://github.com/hanks-zyh/SwipeRefreshLayout
http://www.jianshu.com/p/d6a76fd3ea5b
http://blog.csdn.net/lmj623565791/article/details/38902805
http://blog.csdn.net/lmj623565791/article/details/51118836