推荐大家一个好用的实现分页加载和下拉刷新Android工具包
16lz
2021-01-26
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
更多相关文章
- Android(安卓)Camera系统
- Android(安卓)Camera Framework Stream(二)
- Android(安卓)跳转到下个Activity并将当前Activity从栈中移除
- Android(安卓)Internet应用实现获取天气预报的示例代码
- Android(安卓)Lint简介
- GreenDao数据库升级解决方案
- Android向node.js编写的服务器发送数据并接收请求
- Android(安卓)程序员优选 数据库辅助工具 NaviCat
- 批量复制IE临时文件(Temporary Internet Files)