如何实现上拉加载,默认加载10条数据,上拉再加载10条数据。
2015-09-24 16:27
323 查看
首先如果要用PullToRefreshListView的话,需要先导入一个第三方的Library的库,这个PullToRefreshListView用法跟Listview差不多,有一点不同的是PullToRefreshListView的onPostExecute方法中,position是从1开始的,而listview是从0开始,这点大家注意。
OK,导入Library之后,直接引用com.handmark.pulltorefresh.library.PullToRefreshListView,就可以,里面的一些参数 我不就在这里一一讲解了。接下来我重点讲一下如何默认加载十条,和下拉加载另外十条。
哦对了,再补充一下,上拉下拉的提示文字 默认是白色的,如果背景也是白色的话,会看不到,但是也没有设置字体颜色的接口,必须得自定义xml属性,更改设置颜色的底层方法。
基本情况就是这样了
OK,导入Library之后,直接引用com.handmark.pulltorefresh.library.PullToRefreshListView,就可以,里面的一些参数 我不就在这里一一讲解了。接下来我重点讲一下如何默认加载十条,和下拉加载另外十条。
private void initData() { // 设置可以上下拉 mPullToRefresh.setMode(Mode.BOTH); ILoadingLayout startLabels = mPullToRefresh.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("使劲...");// 刚下拉时,显示的提示 startLabels.setRefreshingLabel("正在使劲加载...");// 刷新时 startLabels.setReleaseLabel("放开加载...");// 下来达到一定距离时,显示的提示 ILoadingLayout endLabels = mPullToRefresh.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("使劲...");// 刚下拉时,显示的提示 endLabels.setRefreshingLabel("正在使劲载入...");// 刷新时 endLabels.setReleaseLabel("放开刷新...");// 下来达到一定距离时,显示的提示 mPullToRefresh.setOnRefreshListener(new OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh( PullToRefreshBase<ListView> refreshView) { mSlideBool = true; new FinishRefresh().execute(); } @Override public void onPullUpToRefresh( PullToRefreshBase<ListView> refreshView) { mSlideBool = false; new FinishRefresh().execute(); } }); }这个方法主要设置上拉下拉显示提示的文字,判断是上拉还是下拉,我这里是用一个变量mSlideBool,onPullDownToRefresh 方法是下拉事件,如果进入 则mSlideBool为true,在AsyncTask中判断mSlideBool的值执行相应的上拉下拉代码。
private class FinishRefresh extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { if (mNumber == 1) { if (mSlideBool) { // 执行警报界面的下滑操作 Log.i("111111", "执行警报界面的下滑操作"); } else { // 执行警报界面的上滑操作 Log.i("111111", "执行警报界面的上滑操作"); File file = new File(mAlertMusicPath); Log.i("--------------", file.list().length - csList.size()+ ""); if (mEndIndex + 10 > file.list().length - 1) { csList.addAll(DecryptionMusic(file, mAlertMusicPath,mEndIndex, file.list().length)); mEndIndex = file.list().length; } else { csList.addAll(DecryptionMusic(file, mAlertMusicPath,mEndIndex, mEndIndex + 10)); mEndIndex = mEndIndex + 10; } } } else { if (mSlideBool) { // 执行门铃界面的下滑操作 Log.i("111111", "执行门铃界面的下滑操作"); } else { // 执行门铃界面的上滑操作 Log.i("111111", "执行门铃界面的上滑操作"); File file = new File(mBellMusicPathString); Log.i("--------------", file.list().length - csList.size()+ ""); if (mEndIndex + 10 > file.list().length - 1) { csList.addAll(DecryptionMusic(file, mBellMusicPathString,mEndIndex, file.list().length)); mEndIndex = file.list().length; } else { csList.addAll(DecryptionMusic(file, mBellMusicPathString,mEndIndex, mEndIndex + 10)); mEndIndex = mEndIndex + 10; } } } return null; }这里因为我是解密加载sd卡中的文件,所以数据来源是sd卡中的加密文件。
public List<String> DecryptionMusic(File file, String fileAbsolutePath,int start, int end) { String[] filelist = file.list(); ArrayList<String> listFile = new ArrayList<String>(); if(file.list().length<10){ end=file.list().length; } for (int i = start; i < end; i++) { File readfile = new File(fileAbsolutePath + "/" + filelist[i]); Log.i("FileName", readfile.getAbsolutePath()); try { File file2 = EncryptUtils.decryptVoice(readfile, mDestinationPath); if (file2.getName().toLowerCase().endsWith(".mp3")) { Log.i("FileName", file2.getName()); listFile.add(file2.getName()); } } catch (Exception e) { continue; } } return listFile; }这个方法是我解密加载文件的方法。 如何默认加载前10条,就是通过改变这个for循环的end值,上拉的时候mEndIndex就相当于start,for循环开始的位置,结束的位置,就是mEndIndex+10就是加载10条,这样就可以实现上拉加载了。
哦对了,再补充一下,上拉下拉的提示文字 默认是白色的,如果背景也是白色的话,会看不到,但是也没有设置字体颜色的接口,必须得自定义xml属性,更改设置颜色的底层方法。
基本情况就是这样了
相关文章推荐
- 关于 XcodeGhost , 如何进行保护APP安全性
- sql server2005分页rownumber()
- MOSFET选型注意事项及应用实例
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 搜索的时候,不改变页数。
- 习奥会前奏:第八届中美互联网论坛
- [转]jQuery插件写法总结以及面向对象方式写法
- IOS MD5 + Base64加密
- Json概述以及python对json的相关操作
- How to access local directory with script executed in oozie?
- 解读C++编程的相关文件操作
- LeetCode 110 : Balanced Binary Tree
- 得到Android设备的唯一id
- Storm单机部署方案---原创
- 算法篇第一:关联规则算法之Apriori(1)
- Genymotion
- Oracle常用sql
- unix/linux编程实践教程———open和fdopen的区别
- Android 关于页卡布局的一个小技巧---如何在当前页刷新数据
- mysql读写分离(二)-----主从复制