PullToRefresh

本文介绍了如何在Android应用中使用PullToRefreshListView组件实现下拉刷新和上拉加载功能。详细讲解了初始化ListView、设置刷新监听器及样式等关键步骤,并提供了自定义刷新提示文本的方法。
摘要由CSDN通过智能技术生成

注意点
① 加了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方式加入,就是滚动时刷新头部会一起滚动。 -->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值