转载请注明出处:http://blog.csdn.net/footballclub/
XRefreshView更新说明
这段时间一直有朋友给我反馈,让我帮忙解决问题,我汇总了下,有以下几种:
1. 处理listview滑动删除与XRefreshView的冲突
2. 处理viewpager和XRefreshView的冲突
3. listview滑动到底部自动加载更多
4. 刷新时,不让里面的listview上下滑动
5. 自定义headerview和footerview
6. 配置自定义头部广告位
除了广告位的都已经完成了。除此之外,我还对默认的header和footer做了ui上的优化,特别地,鉴于Recylerview的强大,我还针对Recylerview做了特别的适配,接下来先看效果图,在模拟器上录的,有点卡卡的。
效果图
更新详细
1.处理横向移动与XRefreshView的冲突
如果需要在手指横向移动的时候,让XRefreshView不拦截事件,
xRefreshView.setMoveForHorizontal(true);
可以调用setMoveForHorizontal并传入true即可。
2.滑动到底部自动加载更多
目前只做了Abslistview和Recylerview的
xRefreshView.setAutoLoadMore(false);
true会自动加载更多,false则相反。传入false的话,如果是listview,需要上拉才能加载更多,如果是Recylerview,则会需要点击才能加载更多。就像这样
点击加载更多涉及到自定义footerview,到后面再说,这里先放着。
3.刷新时,不让里面的列表上下滑动
如果刷新时不想让里面的列表滑动,可以这么设置
xRefreshView.setPinnedContent(true);
4.支持按钮点击开始刷新
XRefreshView不仅支持手势下拉刷新,也支持按钮点击开始刷新,
xRefreshView.startRefresh();
可以在activity的onResume()中调用,也可以在按钮的点击事件中调用。
5.设置Abslistview和Recylerview的滚动监听事件
如果你有设置Abslistview和Recylerview滚动监听事件的需要的话,就不能直接使用Abslistview和Recylerview的setOnScrollListener方法了,因为为了实现自动加载更多的功能,监听已经被XRefreshView使用了,所以这时候需要使用XRefreshView提供的设置滚动监听的方法
/**
* 设置Abslistview的滚动监听事件
*
* @param listener
*/
public void setOnAbsListViewScrollListener(OnScrollListener scrollListener) {
mContentView.setOnAbsListViewScrollListener(scrollListener);
}
/**
* 设置Recylerview的滚动监听事件
*/
public void setOnRecyclerViewScrollListener(
RecyclerView.OnScrollListener scrollListener) {
mContentView.setOnRecyclerViewScrollListener(scrollListener);
}
6.设置加载更多
如果希望在加载更多数据的时候,能在没有新数据的时候,隐藏footerview的话,
new Handler().postDelayed(new Runnable() {
public void run() {
//模拟数据加载完成
if (mLoadCount >= 3) {
xRefreshView.setLoadComplete(true);
}
adapter.insert(new Person("More ", "21"),
adapter.getAdapterItemCount());
adapter.insert(new Person("More ", "21"),
adapter.getAdapterItemCount());
adapter.insert(new Person("More ", "21"),
adapter.getAdapterItemCount());
mLoadCount++;
//刷新完成必须调用此方法停止加载
xRefreshView.stopLoadMore();
}
}, 1000);
当调用xRefreshView.setLoadComplete(true)以后,就会隐藏footerview;如果过段时间又有新的数据了,可以调用xRefreshView.setLoadComplete(false),这样就又可以正常加载更多了。
7.其他一些属性的设置
/**
* 设置headerview回滚的时间,默认400毫秒
*
* @param during
*/
public void setScrollDuring(int during) {
SCROLL_DURATION = during;
}
/**
* 设置阻尼系数,建议使用默认的
*
* @param ratio