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

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

public class CowWightLogAdapter extends RecyclerView.Adapter<CowWightLogAdapter.ViewHolder> {

    private List<WeightLogData> 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<WeightLogData> 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<WeightLogData> addMessageList) {
        //增加数据
        int position = list.size();
        list.addAll(position, addMessageList);
        notifyItemInserted(position);
    }

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

}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 林殊-梅长苏,在生命与国家之间,在爱情和国家之间,放弃自己,选择大义,外表清肃平静得让你以为他一心只有国仇家恨。 ...
    窦睿2017阅读 1,389评论 0 0
  • 夜空里的月亮好圆 似一张脸 皎洁 圆润 夜色里的人好散漫 如一辑小舟漂浮在大海 无边无际 无着无落 在霓虹之外与街...
    流浪猫70s阅读 346评论 0 7
  • 人是不可以战胜市场持续获利的,只能选好时机顺势而为。 其实从客观来说,股市大部分时间都是不适合操作的,因为处于震荡...
    交易与感悟阅读 668评论 1 1