PullToRefreshListView注意事项

1-PullToRefresh使用刷新后,如果立即调用onRefreshComplete(),onRefreshComplete()会运行失效,下拉刷新的进度状态并不会消失,一直处于刷新状态.
解决办法:延迟调用onRefreshComplete();

        ptrListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {

            @Override
            public void onPullDownToRefresh(
                    PullToRefreshBase<ListView> refreshView) {
                // 下拉刷新
                //这里要延迟执行ptrListView.onRefreshComplete()方法,如果立马执行onRefreshComplete()
                //会导致onRefreshComplete()执行失效,ptrListView停留在刷新状态
                new Handler().postDelayed(new Runnable(){     

                    public void run() {     
                    //execute the task 
                    }     
                 }, 1000); 

            }

            @Override
            public void onPullUpToRefresh(
                    PullToRefreshBase<ListView> refreshView) {
                // 上拉加载更多
                new Handler().postDelayed(new Runnable(){     

                    public void run() {     
                    //execute the task     
                    }     
                 }, 1000);  
            }
        });

2-PullToRefreshListView在使用时,在xml的布局文件中,小心使用android:visibility=”gone”;
同时PullToRefreshListView父布局的height设置成match_parent
以上因素可能导致PullToRefreshListView在适配数据后不能正常显示

3-使用PullToRefreshWebView库的时候,在android6.0上
PullToRefreshWebView中的FloatMath.floor()不能继续使用,其中floor会要报错

protected boolean isReadyForPullEnd() {
float exactContentHeight = FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
return mRefreshableView.getScrollY() >= (exactContentHeight - mRefreshableView.getHeight());
}

解决办法:
Android6.0中使用 Math.floor 代替 FloatMath.floor ;

4-给PullToRefreshListView添加下拉刷新监听的时候,OnRefreshListener2会调用失败,原因是自动导包的时候导的是OnRefreshListener,OnRefreshListener2需要手动导包:

import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;

5-如果PullToRefreshListView要进行长按,则先要通过
PullToRefreshListView.getRefreshableView().setOnItemLongClickListener(this);
来进行长按监听,不能用原生ListView的OnItemLongClickListener方法

6-以下两个属性需要特别说明以下:
ptrScrollingWhileRefreshingEnabled刷新的时候,是否允许ListView或GridView滚动。
ptrListViewExtrasEnabled 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。此设置如果为false,在mPullRefreshListView上拉刷新的时候,新添加入的值不会立即显示在mPullRefreshListView的尾部,需要下拉后再上拉才能显示,故一般该值设置为true。

PS:
PullToRefreshListView的具体使用和案例示例,可参考鸿洋的博客
http://blog.csdn.net/lmj623565791/article/details/38238749

好的,那我接下来讲解一下如何使用 `PullToRefreshlibrary` 框架。 1. 在 `XML` 文件中添加 `PullToRefresh` 控件: ```xml <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pull_to_refresh_list_view" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </com.handmark.pulltorefresh.library.PullToRefreshListView> ``` 2. 在 `Java` 代码中初始化 `PullToRefresh` 控件: ```java PullToRefreshListView pullToRefreshListView = findViewById(R.id.pull_to_refresh_list_view); ListView listView = pullToRefreshListView.getRefreshableView(); // 设置刷新监听器 pullToRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { // 执行刷新操作 new GetDataTask().execute(); } }); // 设置加载更多监听器 pullToRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() { @Override public void onLastItemVisible() { // 执行加载更多操作 new GetDataTask().execute(); } }); ``` 3. 实现刷新和加载更多的操作: ```java private class GetDataTask extends AsyncTask<Void, Void, List<String>> { @Override protected List<String> doInBackground(Void... params) { // 执行网络请求或其他耗时操作,返回数据列表 List<String> data = new ArrayList<>(); // ... return data; } @Override protected void onPostExecute(List<String> data) { // 刷新或加载更多完毕后,更新列表数据并结束刷新状态 if (isRefreshing) { adapter.setData(data); pullToRefreshListView.onRefreshComplete(); isRefreshing = false; } else { adapter.addData(data); pullToRefreshListView.onRefreshComplete(); } } } ``` 以上就是使用 `PullToRefreshlibrary` 框架的基本步骤,您可以根据自己的实际需求进行修改和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值