PullRefreshListView添加addFooterView 添加emptyView 禁止上滑 禁止下滑 自动刷新( 动态刷新) 自动加载更多(动态加载更多)

本文介绍如何在 Android 应用中实现 PullToRefreshListView 的功能,包括添加底部视图、控制滚动方向、设置刷新监听及调整加载提示的可见性等。通过具体代码示例,帮助开发者更好地理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.添加addFooterView  emptyView

	
	Button feetView=(Button) LayoutInflater.from(bfContext).inflate(R.layout.pull2view_feetview, null);
	
	ListView  actualListView = mPullRefreshListView.getRefreshableView();
	actualListView.setAdapter(mPullAdapter);
	actualListView.addFooterView(feetView);
	
//	actualListView.setEmptyView(emptyView);
	mPullRefreshListView.setEmptyView(emptyView);
	
	
	

footview

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="@dimen/bottom_menu_height50"
    android:text="@string/loading_more"
    android:gravity="center"
	android:textSize="@dimen/header_textsize15sp"
	android:textColor="@color/blue"
	android:background="@color/white"/>

2.禁止上滑  禁止下滑  自动刷新( 动态刷新)   自动加载更多(动态加载更多)   

a.在方法里面添加一个方法:setCurrentMode


b.下面的方法改进:


 java代码

		feetView.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
//				mPullRefreshListView.getRefreshableView().scrollTo(0,);
				mPullRefreshListView.setCurrentMode(Mode.PULL_FROM_END);;
				mPullRefreshListView.setRefreshing(false);//true 为下拉刷新; false 为上拉加载更多;  第一次上滑动之前,点击时候,都是默认刷新的;
				feetView.setText("正在加载中...");
				feetView.setTextColor(getResources().getColor(R.color.black));
//				mPullRefreshListView.setMode(Mode.PULL_FROM_END);//允许从底部往上滑动;禁止从顶部往下滑动
//				mPullRefreshListView.setMode(Mode.PULL_FROM_START);//禁止从底部往上滑动;允许从顶部往上滑动
//				mPullRefreshListView.setMode(Mode.PULL_DOWN_TO_REFRESH);//使用这个PULL_FROM_START
//				mPullRefreshListView.setMode(Mode.PULL_UP_TO_REFRESH);// 使用这个PULL_FROM_END
//				mPullRefreshListView.setMode(Mode.BOTH);//都允许
//				mPullRefreshListView.setMode(Mode.DISABLED);//都禁止
				
			}
		});






3.刷新上下拉刷新监听,footView的 可见否

mPullRefreshListView.setMode(Mode.BOTH);
		mPullRefreshListView.getLoadingLayoutProxy(false, true).setPullLabel(getString(R.string.pull_up_to_load));
		mPullRefreshListView.getLoadingLayoutProxy(false, true).setRefreshingLabel(getString(R.string.loading));
		mPullRefreshListView.getLoadingLayoutProxy(false, true).setReleaseLabel(getString(R.string.release_to_load));

		mPullRefreshListView.setOnRefreshListener(new OnRefreshListener2() {// 这一行,需要做好上下拉刷新,的数据加载和保存;要看数据库设计了;
			// 设置下拉刷新
			@Override
			public void onPullDownToRefresh(PullToRefreshBase refreshView) {
				Log.e(TAG, "走下滑动事件了");
				String label = DateUtils.formatDateTime(mContext, System.currentTimeMillis(),
						DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);

				// Update the LastUpdatedLabel
				refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
				// Do work to refresh the list here.
				// new GetDataTask(true).execute();
				if (selectWhichBox.equals("搜索结果")) {

//					Toast.makeText(bfContext, selectWhichBox + "这个功能怎么个刷新法子?", Toast.LENGTH_SHORT).show();
					emailHandelr.sendMessageDelayed(emailHandelr.obtainMessage(NOTIFY_PULLIST_NOSORT_NODRAWER), 1000);
				} else {
					new ReqSelectFolderData_Notify(mStore, bfContext, bfHandler).execute(selectWhichBox);
					// new ReqSelectFolderData(mStore, bfContext,
					// bfHandler).execute(selectWhichBox);
				}
//				Toast.makeText(mContext, "Pull_Down", Toast.LENGTH_SHORT).show();
			}

			// 设置上拉加载更多
			@Override
			public void onPullUpToRefresh(PullToRefreshBase refreshView) {
				Log.e(TAG, "走上滑动事件了");
				feetView.setVisibility(View.GONE);
				String label = DateUtils.formatDateTime(mContext, System.currentTimeMillis(),
						DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL);

				// Update the LastUpdatedLabel
				refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label);
				// Do work to refresh the list here.
				if (selectWhichBox.equals("搜索结果")) {
//					Toast.makeText(bfContext, selectWhichBox + "这个功能怎么个刷新法子?", Toast.LENGTH_SHORT).show();
					emailHandelr.sendMessageDelayed(emailHandelr.obtainMessage(NOTIFY_PULLIST_NOSORT_NODRAWER), 1000);
				} else {

					lastMailSum = mListItems.size();
					new ReqSelectFolderData_Per10(mStore, mContext, bfHandler).execute(selectWhichBox,
							lastMailSum + "");
					// new ReqSelectFolderData(mStore, bfContext,
					// bfHandler).execute(selectWhichBox);
				}
//				Toast.makeText(mContext, "Pull_Up", Toast.LENGTH_SHORT).show();
			}

		});
		mPullRefreshListView.setOnScrollListener(new OnScrollListener() {
			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
				// 判断是否到底部,而且是滑动状态静止
				if (isBottom&& scrollState==OnScrollListener.SCROLL_STATE_IDLE) {
//					if (!mPullRefreshListView.isRefreshing()) {//没有刷新或者加载更多时,进行显示
						feetView.setVisibility(View.VISIBLE);
//					}else {
//						feetView.setVisibility(View.GONE);
//					}
				}
				if (mListItems.size()==0) {
					feetView.setVisibility(View.GONE);
				}
			}
			
			@Override
			public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
			//  判断是否在屏幕底部
			if ((firstVisibleItem+visibleItemCount)>=(totalItemCount)) {//由于本身底部自带一个feetView和一个顶部所以要减去1
				isBottom=true;
//				if (!mPullRefreshListView.isRefreshing()) {//没有刷新或者加载更多时,进行显示
					feetView.setVisibility(View.VISIBLE);
//				}else {
//					feetView.setVisibility(View.GONE);
//				}
			}else {
				isBottom=false;
				feetView.setVisibility(View.GONE);
			}
			if (mListItems.size()==0) {
				feetView.setVisibility(View.GONE);
			}
				
			}
		});
//		mPullRefreshListView.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() {
//            @Override
//            public void onLastItemVisible() {
//            	feetView.setVisibility(View.VISIBLE);
//                //后面执行加载数据的请求,完成后调用footer.setVisibility(View.GONE)
//            }
//        });
		






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值