美文网首页
Android三方控件—XRecyclerView上下拉刷新

Android三方控件—XRecyclerView上下拉刷新

作者: YX_亚亚呀 | 来源:发表于2019-12-31 15:51 被阅读0次

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);

相关文章

网友评论

      本文标题:Android三方控件—XRecyclerView上下拉刷新

      本文链接:https://www.haomeiwen.com/subject/muiboctx.html