PageAndPullToRefresh工具包

分页加载和下拉刷新,几行代码完全搞定

具体实现方法如下:

实例化一个PageAndRefreshListView,

可以通过layout来加载

 
mListView = (PageAndRefreshListView) view.findViewById(R.id.balance_page_list);
给ListView设置adapter ,这个adapter需要继承PageAndRefreshBaseAdapter

示例如下:

adapter = new BalanceInfoAdapter(mContext, new BalanceDataReuqest(mContext, map));mListView.setAdapter(adapter);
adapter 示例:

public class BalanceInfoAdapter extends PageAndRefreshBaseAdapter {private LayoutInflater mInflater;public BalanceInfoAdapter(Context context,PageAndRefreshRequestService requestService) {super(requestService);mInflater = LayoutInflater.from(context);}class ViewHolder {public TextView bl_time_tv;public TextView bl_comefrom_tv;public TextView bl_income_tv;public TextView bl_sumcount_tv;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = mInflater.inflate(R.layout.balance_list_item, null);holder.bl_time_tv = (TextView) convertView.findViewById(R.id.bl_time_tv);holder.bl_comefrom_tv = (TextView) convertView.findViewById(R.id.bl_comefrom_tv);holder.bl_income_tv = (TextView) convertView.findViewById(R.id.bl_income_tv);holder.bl_sumcount_tv = (TextView) convertView.findViewById(R.id.bl_sumcount_tv);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}BalanceInfo data = (BalanceInfo) getItem(position);if (data != null) {holder.bl_time_tv.setText(data.getCreateTime());holder.bl_comefrom_tv.setText(data.getPaymentTypeName());holder.bl_income_tv.setText(data.getCount());holder.bl_sumcount_tv.setText(data.getLeftCount());}return convertView;}}

实例化 PageAndRefreshBaseAdapter需要传递一个实现了PageAndRefreshRequestService接口的对象,该对象实现数据的获取与分页刷新机制,具体代码如下:

public class BalanceDataReuqest implements PageAndRefreshRequestService {private PageAndRefreshRequestCallBack mCallBack;private int page;private Context mContext;private Map map = new HashMap();private Handler handler = new Handler() {@SuppressWarnings("unchecked")@Overridepublic void handleMessage(Message msg) {switch (msg.what) {// 模拟请求结果,一次成功,一次失败,循环case 1:mCallBack.onRequestComplete((List) msg.obj,msg.arg1);break;default:break;}super.handleMessage(msg);}};public BalanceDataReuqest(Context context, Map map) {mContext = context;this.map = map;}@Overridepublic void sendRequest(int page, PageAndRefreshRequestCallBack listener) {if (mCallBack == null) {mCallBack = listener;}this.page = page;map.put("pageNum", page + "");map.put("pageSize", "30");// 此处使用线程模拟数据请求(网络或数据库)过程getData();}private void getData(){//自定义获取网络数据//通过Handler方式将页总数以及数据传递到主线程msg.what = 1;msg.obj = mdatas;msg.arg1 = totalPage;handler.sendMessage(msg);}}

   
   
至此,就完成了这个开源包的使用,如题效果如图:



开源包下载路径:github地址https://github.com/tubeber/PageAndPullToRefresh

欢迎交流:lyhwtu@126.com





更多相关文章

  1. Android(安卓)Camera系统
  2. Android(安卓)Camera Framework Stream(二)
  3. Android(安卓)跳转到下个Activity并将当前Activity从栈中移除
  4. Android(安卓)Internet应用实现获取天气预报的示例代码
  5. Android(安卓)Lint简介
  6. GreenDao数据库升级解决方案
  7. Android向node.js编写的服务器发送数据并接收请求
  8. Android(安卓)程序员优选 数据库辅助工具 NaviCat
  9. 批量复制IE临时文件(Temporary Internet Files)

随机推荐

  1. Python MNIST手写体识别详解与试练
  2. Vue:怎么设置,不让eslint报错
  3. Python 中的 copy()和deepcopy()
  4. python中取整数的几种方法
  5. python中if和elif的区别介绍
  6. cookie 保存和清除用户样式
  7. python利用while求100内的整数和方式
  8. js 自定义获取指定类名的标签集合
  9. 用JS实现简单计算器的坑
  10. localstorage刷新背景页面不变色