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