注意点
① 加了PullToRefresh的ListView,第一个item的下标应该是 1,0被刷新占了。
②通过mPullToRefreshListView.onRefreshComplete()停止加载动画(通过handler处理,直接调用好像不起作用)
依赖库地址 http://pan.baidu.com/disk/home#list/path=%2Fandroid%2F%E7%AC%AC%E4%B8%89%E6%96%B9jar%20%E5%8C%85
更多介绍 张鸿洋 http://blog.csdn.net/lmj623565791/article/details/38238749/
public class MainActivity extends Activity {
private PullToRefreshListView mPullToRefreshListView;
private ListView lv;
private ArrayAdapter<String>adapter;
private List<String>mItemList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPullToRefreshListView = (PullToRefreshListView)findViewById(R.id.id_pull_lv);
lv = mPullToRefreshListView.getRefreshableView();
mItemList = new ArrayList<String>();
initData();
mPullToRefreshListView.setMode(Mode.BOTH);
mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh( //下拉刷新执行的方法
PullToRefreshBase<ListView> refreshView) {
Log.i("tag", "下拉刷新执行的方法");
handler.sendEmptyMessageAtTime(1, 1000);
}
@Override
public void onPullUpToRefresh(
PullToRefreshBase<ListView> refreshView) { //上拉加载执行的方法
new GetDataTask().execute();
}
});
}
设置刷新样式
改变旋转图标
<com.handmark.pulltorefresh.library.PullToRefreshGridView
ptr:ptrDrawable="@drawable/ic_launcher"
...
/>
当然了这是旋转的效果,一般常用的还有,一个箭头倒置的效果,其实也很简单,一个属性:
ptr:ptrAnimationStyle="flip"
去掉 ptr:ptrDrawable="@drawable/ic_launcher"这个属性,如果你希望用下图默认的箭头,你也可以自定义。
添加后,箭头就是这个样子:
ptr:ptrAnimationStyle的取值:flip(翻转动画), rotate(旋转动画) 。
ptr:ptrDrawable则就是设置图标了
**设置刷新字体**
private void initIndicator()
{
ILoadingLayout startLabels = mPullRefreshListView
.getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示
startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时
startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示
ILoadingLayout endLabels = mPullRefreshListView.getLoadingLayoutProxy(
false, true);
endLabels.setPullLabel("你可劲拉,拉2...");// 刚下拉时,显示的提示
endLabels.setRefreshingLabel("好嘞,正在刷新2...");// 刷新时
endLabels.setReleaseLabel("你敢放,我就敢刷新2...");// 下来达到一定距离时,显示的提示
}
属性设置
<com.handmark.pulltorefresh.library.PullToRefreshListView
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
ptr:ptrHeaderTextColor="@android:color/background_dark">
</com.handmark.pulltorefresh.library.PullToRefreshListView>
<!-- ptrRefreshableViewBackground 设置整个mPullRefreshListView的背景色 -->
<!-- ptrHeaderBackground 设置下拉Header或者上拉Footer的背景色 -->
<!-- ptrHeaderTextColor 用于设置Header与Footer中文本的颜色 -->
<!-- ptrHeaderSubTextColor 用于设置Header与Footer中上次刷新时间的颜色 -->
<!-- ptrShowIndicator如果为true会在mPullRefreshListView中出现icon,右上角和右下角,挺有意思的。 -->
<!-- ptrHeaderTextAppearance , ptrSubHeaderTextAppearance分别设置拉Header或者上拉Footer中字体的类型颜色等等。 -->
<!-- ptrRotateDrawableWhilePulling当动画设置为rotate时,下拉是是否旋转。 -->
<!-- ptrScrollingWhileRefreshingEnabled刷新的时候,是否允许ListView或GridView滚动。觉得为true比较好。 -->
<!-- ptrListViewExtrasEnabled 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。 -->