如何实现上拉加载,默认加载10条数据,上拉再加载10条数据。

首先如果要用PullToRefreshListView的话,需要先导入一个第三方的Library的库,这个PullToRefreshListView用法跟Listview差不多,有一点不同的是PullToRefreshListView的onPostExecute方法中,position是从1开始的,而listview是从0开始,这点大家注意。

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属性,更改设置颜色的底层方法。



基本情况就是这样了

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值