原地址:http://blog.csdn.net/markingcfx/article/details/50987052
下拉加载
Ultra-Pull-To-Refresh
地址:https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh
随后就是增加上拉加载的版本
Ultra-Pull-To-Refresh-With-Load-More
地址:https://github.com/captainbupt/android-Ultra-Pull-To-Refresh-With-Load-More
其实资料以及比较完善了,我只是补充一下在使用上拉加载的时候可能遇到的问题,就是Ultra-Pull-To-Refresh-With-Load-More的使用
一.jar包的引用
1.可以使用gradle添加到项目中
compile 'in.srain.cube:ptr-load-more:1.0.2’
选择最新版本即可
2.在github上下载源码讲ptr-lib作为依赖添加到项目中,方便eclipse使用
二.使用方法几乎与Ultra-Pull-To-Refresh一样,首先配置到xml的布局文件中,使用RecyclerView做事例
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.chen_pc.myapplication.MainActivity">
<in.srain.cube.views.ptr.PtrClassicFrameLayout
android:id="@+id/rotate_header_list_view_frame"
xmlns:cube_ptr="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
cube_ptr:ptr_duration_to_close="200"
cube_ptr:ptr_duration_to_close_header="1000"
cube_ptr:ptr_keep_header_when_refresh="true"
cube_ptr:ptr_pull_to_fresh="false"
cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2"
cube_ptr:ptr_resistance="1.7">
<android.support.v7.widget.RecyclerView
android:id="@+id/rotate_header_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@null"
android:fadingEdge="none"
android:listSelector="@android:color/transparent"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:scrollbarStyle="outsideOverlay"
android:choiceMode="singleChoice" />
</in.srain.cube.views.ptr.PtrClassicFrameLayout>
三.代码块
mPtrFrame.setPtrHandler(new PtrDefaultHandler2() {
@Override
public void onLoadMoreBegin(final PtrFrameLayout frame) {
mPtrFrame.postDelayed(new Runnable() {
@Override
public void run() {
frame.refreshComplete();
}
}, 1000);
}
@Override
public void onRefreshBegin(final PtrFrameLayout frame) {
mPtrFrame.postDelayed(new Runnable() {
@Override
public void run() {
frame.refreshComplete();
}
}, 1000);
}
});
// the following are default settings
mPtrFrame.setResistance(1.7f);
mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f);
mPtrFrame.setDurationToClose(200);
mPtrFrame.setDurationToCloseHeader(1000);
// default is false
mPtrFrame.setPullToRefresh(false);
// default is true
mPtrFrame.setKeepHeaderWhenRefresh(true);
mPtrFrame.postDelayed(new Runnable() {
@Override
public void run() {
mPtrFrame.autoRefresh();
}
}, 100);
四,这里主要说一下这个方法mPtrFrame.setPtrHandler()
参考源码可以看到里面是hanlder的回调,这个方法不仅作为数据加载处理的回调,同样,因为我们使用的是一个支持上拉加载的修改过的库,所以和原库的回调有区别
你的回调决定了你的模式,之前在这里浪费了很多时间,就是没有上拉的功能
上拉下拉均有的模式:
mPtrFrame.setPtrHandler(new PtrDefaultHandler2() {
//重写方法忽略
}
只有下拉的模式:
mPtrFrame.setPtrHandler(new PtrDefaultHandler() {
//重写方法忽略
}
其他的方法就不一一列举了,容易出问题的地方就是这里,你的回调决定了你的上拉与下拉的支持与否
具体的实现上拉的逻辑详细请看这里,
http://blog.csdn.net/hwz2311245/article/details/48749873#comments