美文网首页
android list列表上拉加载和下拉刷新

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

作者: Zebraaa | 来源:发表于2019-08-17 20:07 被阅读0次

    在我们的开发中对于大量的列表数据进行展示,后端开发肯定会进行分页处理,而在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)。就可以了。
    是不是很简单,如果觉得有用的点个赞评论一下。

    相关文章

      网友评论

          本文标题:android list列表上拉加载和下拉刷新

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