XRecyclerView控件是一个加强版的RecyclerView,可以很方便的实现下拉刷新,上拉加载更多等功能。使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊的adater。加载效果内置了AVLoadingIndicatorView上的所有效果,可以根据需要指定。android版的支付宝就用到了这个控件。
控件地址:https://github.com/jianghejie/XRecyclerView
使用步骤:
第一步:引用库,在app的build.gradle中添加引用
compile 'com.jcodecraeer:xrecyclerview:1.6.0'
第二步:创建控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white">
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/xrv_feedbackList"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.jcodecraeer.xrecyclerview.XRecyclerView>
</LinearLayout>
注意:控件高度layout_height设置为match_parent属性时只有当数据满屏之后才能上拉加载更多,控件高度layout_height设置为wrap_content时即使数据没有达到满屏也可以上拉加载更多
第三步:控件设置
(1)初始化控件获取资源ID
XRecyclerView xRecyclerView = (XRecyclerView)view.findViewById(R.id.xrv_feedbackList);
(2)为控件设置布局
//LinearLayoutManager是线性布局,setOrientation可以设置他的方向是横向还是纵向。
LinearLayoutManager layoutManager=new LinearLayoutManager(context);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
//添加布局管理器
xRecyclerView.setLayoutManager(layoutManager);
(3)设置控件是否可以上下拉刷新(默认是可以的)true允许/false不允许
//设置是否允许下拉刷新
xRecyclerView.setPullRefreshEnabled(true);
//设置是否允许上拉加载
xRecyclerView.setLoadingMoreEnabled(true);
(4)设置上拉下拉刷新的样式
xRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
xRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallSpinFadeLoader);
(5)设置头部
//xRecyclerView.getDefaultRefreshHeaderView().setRefreshTimeVisible(true);
//View header = LayoutInflater.from(context).inflate(R.layout.accident_ammt_item,(ViewGroup)view.findViewById(android.R.id.content),false);
//xRecyclerView.addHeaderView(header);
(6)其他设置
//设置上下拉的文字提示语
// xRecyclerView.getDefaultFootView().setLoadingHint("自定义加载中提示");
//设置XRecyclerView加载到最后一页再上拉的提示信息
//xRecyclerView.getDefaultFootView().setNoMoreHint("加载完毕");
//设置XRecyclerView下拉刷新时间提示
//xRecyclerView.getDefaultRefreshHeaderView().setRefreshTimeVisible(false);
(7)为控件设置上下拉监听方法
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
//下拉刷新
public void onRefresh() {
//当下拉刷新的时候,重新获取数据,所有curr要变回0,并且把集合list清空
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
curr=1; //当前页码
/**加载数据处理**/
xRecyclerView.refreshComplete();
}
},2000);
}
@Override
//上拉加载
public void onLoadMore() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
curr++;//当前页码
/**加载数据处理**/
xRecyclerView.loadMoreComplete();
}
},2000);
}
});
第四步:创建Adapter
public class FeedBackAdapter extends RecyclerView.Adapter<FeedBackAdapter.ViewHolder>{
private Context context;
private List feedBackBeanList=new ArrayList<>();
public FeedBackAdapter(Context context, List feedBackBeanList) {
this.context = context;
this.feedBackBeanList = feedBackBeanList;
}
@Override
public FeedBackAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feedback_list_layout, null, false);
ViewHolder vh = new ViewHolder(view);
return vh;
}
@Override
public void onBindViewHolder(FeedBackAdapter.ViewHolder holder, int position) {
holder.itemView.setTag(position);
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount() {
return feedBackBeanList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public ViewHolder(View itemView) {
super(itemView);
}
}
}
第五步:绑定数据
feedBackBeanList=new ArrayList<>();
feedBackAdapter = new FeedBackAdapter(context,feedBackBeanList);
xRecyclerView.setAdapter(feedBackAdapter);
网友评论