前面写了用法,点击事件,动画等等,这个加入了刷新加载功能。刷新功能我用的谷歌的一个控件SwipeRefreshLayout实现的。XML布局如下:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swiperefreshlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" />
</android.support.v4.widget.SwipeRefreshLayout> Activity代码如下:
private void initRefresh() {
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if(!swipeRefreshLayout.isRefreshing()){//是否正在刷新
ShowToast(context,"正在刷新,请稍后...");
return;
}
mData = new ArrayList<ShuJu>();
for(int i = 0;i<40;i++){
ShuJu mShuJu = new ShuJu(i+"");
mData.add(mShuJu);
}
mRecyclerView.setAdapter(adapter);
swipeRefreshLayout.setRefreshing(false);
ShowToast(context,"刷新完成");
}
});
} 这里先有一个判断是否正在刷新,当用户网不好的时候,有的用户会一直重复刷新的手势,然后会一直触发刷新方法,这是我们不希望看到的,所以,就先判断一下是否正处于刷新状态,如果,处于刷新状态就不用触发网络请求方法。后面有一个setRefreshing(false)。这个是提示隐藏刷新动画。
再就是加载更多方法。代码如下:
private void initOnloaderMore() {
adapter.setEnableLoadMore(true);//开启自动加载
adapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
if(currentPage>=totlePage){
ShowToast(context,"没有更多了");
adapter.loadMoreEnd();
}else{
if(onSuccess){ //获取到数据了
currentPage++;
ShowToast(context,"加载成功");
List<ShuJu> mData1 = new ArrayList<ShuJu>();
for(int i = 40;i<45;i++){
ShuJu mShuJu = new ShuJu(i+"");
mData1.add(mShuJu);
}
adapter.addData(mData1);
adapter.notifyDataSetChanged();
adapter.loadMoreComplete();
}else{
onSuccess = true;
currentPage = 0;
ShowToast(context,"加载失败");
adapter.loadMoreFail();
}
}
}
},mRecyclerView);
} 这里是自动加载,最后一个item的时候会自动加载。这里有三个方法
数据全部加载完之后调用:adapter.loadMoreEnd();
每次网络请求成功之后调用:adapter.loadMoreComplete();
网络请求失败之后调用:adapter.loadMoreFail();
要说的就这么多,至于刷新,加载逻辑自己实现。
版权声明:本文为qq_27634797原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。