xrecyclerview的刷新和加载

来源:互联网 发布:php pack 转换c 编辑:程序博客网 时间:2024/06/16 01:34

首先是导入依赖

compile 'com.jcodecraeer:xrecyclerview:1.3.2'

然后写布局

<com.jcodecraeer.xrecyclerview.XRecyclerView        android:id="@+id/xrv"        android:layout_width="match_parent"        android:layout_height="match_parent" />

然后就可以去写适配器了,其实和以前一样的

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    private Context context;    private List<OrderBean.DataBean> list;    private final CancleOrderPresenter cancleOrderPresenter;    public MyAdapter(Context context, List<OrderBean.DataBean> list) {        this.context = context;        this.list = list;        cancleOrderPresenter = new CancleOrderPresenter();    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);        return new MyViewHolder(view);    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        final OrderBean.DataBean dataBean = list.get(position);        MyViewHolder myViewHolder = (MyViewHolder) holder;        myViewHolder.tv_title.setText(dataBean.getTitle());        int status = dataBean.getStatus();        if (status == 0) {            myViewHolder.tv_status.setText("待支付");            myViewHolder.tv.setText("取消订单");            myViewHolder.tv_status.setTextColor(Color.RED);        } else if (status == 1) {            myViewHolder.tv_status.setText("已支付");            myViewHolder.tv.setText("查看订单");            myViewHolder.tv_status.setTextColor(Color.BLACK);        } else {            myViewHolder.tv_status.setText("已取消");            myViewHolder.tv.setText("查看订单");            myViewHolder.tv_status.setTextColor(Color.BLACK);        }        myViewHolder.tv_price.setText("价格:" + dataBean.getPrice());        myViewHolder.tv_time.setText("创建时间:" + dataBean.getCreatetime());        myViewHolder.tv.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new AlertDialog.Builder(context)                        .setTitle("提示")                        .setMessage("确定取消订单吗?")                        .setPositiveButton("是", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                cancleOrderPresenter.cancleOrder("1", dataBean.getOrderid() + "");                            }                        })                        .setNegativeButton("否", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                            }                        })                        .show();            }        });    }    @Override    public int getItemCount() {        return list.size();    }    class MyViewHolder extends RecyclerView.ViewHolder {        private final TextView tv_title;        private final TextView tv_status;        private final TextView tv_price;        private final TextView tv_time;        private final TextView tv;        public MyViewHolder(View itemView) {            super(itemView);            tv_title = itemView.findViewById(R.id.tv_title);            tv_status = itemView.findViewById(R.id.tv_status);            tv_price = itemView.findViewById(R.id.tv_price);            tv_time = itemView.findViewById(R.id.tv_time);            tv = itemView.findViewById(R.id.tv);        }    }}

最后就是去主页面配置布局管理器和适配器等

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        mXrv.setLayoutManager(new LinearLayoutManager(this));        myAdapter = new MyAdapter(this, list);        mXrv.setAdapter(myAdapter);        //想去获取数据,测试一下数据是否获取到        mainPresenter = new MainPresenter(this);        mainPresenter.getOrder(true, "1", page + "");        mXrv.setLoadingListener(new XRecyclerView.LoadingListener() {            @Override            public void onRefresh() {                //刷新                page = 1;                mainPresenter.getOrder(true, "1", page + "");            }            @Override            public void onLoadMore() {                //加载更多                page++;                mainPresenter.getOrder(false, "1", page + "");            }        });    }    @Override    protected void onDestroy() {        super.onDestroy();        mainPresenter.dettach();    }    private void initView() {        mRb1 = (RadioButton) findViewById(R.id.rb1);        mRb2 = (RadioButton) findViewById(R.id.rb2);        mRb3 = (RadioButton) findViewById(R.id.rb3);        mRg = (RadioGroup) findViewById(R.id.rg);        mXrv = (XRecyclerView) findViewById(R.id.xrv);        mIvPop = (ImageView) findViewById(R.id.iv_pop);        mIvPop.setOnClickListener(this);    }    @Override    public void showData(boolean isRefresh, List<OrderBean.DataBean> newList) {        if (isRefresh) {            //如果是刷新            list.clear();            list.addAll(newList);            mXrv.refreshComplete();        } else {            //如果是加载更多            list.addAll(newList);//            mXrv.loadMoreComplete();//            if (list.size() == 总条目数) {            mXrv.setLoadingMoreEnabled(false);//            }        }        myAdapter.notifyDataSetChanged();    }

下面去p层调用数据

public class MainPresenter {    private OrderModel orderModel;    private IMainActivity iMainActivity;    public MainPresenter(IMainActivity iMainActivity) {        orderModel = new OrderModel();        this.iMainActivity = iMainActivity;    }    public void getOrder(final boolean isRefresh, String status, String page) {        orderModel.getOrder(status, page, new OnNetListener<OrderBean>() {            @Override            public void onSuccess(OrderBean orderBean) {                iMainActivity.showData(isRefresh, orderBean.getData());            }            @Override            public void onFailure(Exception e) {            }        });    }    public void dettach() {        if (iMainActivity != null) {            iMainActivity = null;        }    }}