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)
// }
// });