android list列表上拉加载和下拉刷新

在我们的开发中对于大量的列表数据进行展示,后端开发肯定会进行分页处理,而在android前端我们也需要进行分页加载请求。
这里我推荐上拉 、下拉的控件使用第三方控件SmartRefreshLayout
它的github地址为https://github.com/scwang90/SmartRefreshLayout
具体的引入 看简介 我们就能明白
现在对于list 我推荐使用recyclerView而不是listView
具体原因是前者在更新,刷新list时做了较号的封装。
我们对于list的操作只需要在其Adapter进行
具体看代码:

public class CowWightLogAdapter extends RecyclerView.Adapter {

    private List list;


    static class ViewHolder extends RecyclerView.ViewHolder{
        View view;
        TextView tv_sumweight;
        TextView tv_cownum;
        TextView tv_weighttime;
        public ViewHolder(View itemView) {
            super(itemView);
            view = itemView;
            tv_sumweight = (TextView) view.findViewById(R.id.tv_sumweight);
            tv_cownum = (TextView) view.findViewById(R.id.tv_cownum);
            tv_weighttime = (TextView) view.findViewById(R.id.tv_weighttime);
        }
    }

    public CowWightLogAdapter(List list){
        this.list = list;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_cowweight_log,parent,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    //将数据绑定到控件上
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        WeightLogData weightLogData = list.get(position);
        holder.tv_sumweight.setText("总重量:"+weightLogData.getSumweigh()+"公斤");
        holder.tv_cownum.setText("数量:"+weightLogData.getCattlenum()+"头");
        holder.tv_weighttime.setText(weightLogData.getWtime());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    //下面两个方法提供给页面刷新和加载时调用
    public void add(List addMessageList) {
        //增加数据
        int position = list.size();
        list.addAll(position, addMessageList);
        notifyItemInserted(position);
    }

    public void refresh(List newList) {
        //刷新数据
        list.removeAll(list);
        list.addAll(newList);
        notifyDataSetChanged();
    }

}

我们在界面上只需要对于新的URL请求 得到新的newlist数据,下拉加载 只需adapter.add(newlist)即可,对于上拉刷新只需要adapter.refresh(newlist)。就可以了。
是不是很简单,如果觉得有用的点个赞评论一下。

你可能感兴趣的:(android list列表上拉加载和下拉刷新)