package cn.com.basic.face.pulltorefresh;
|
|
|
import android.content.Context;
|
import android.util.AttributeSet;
|
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.View;
|
import android.widget.ListView;
|
|
public class PullToRefreshListView extends PullToRefreshAdapterViewBase<ListView> {
|
|
// private LoadingLayout headerLoadingView;
|
// private LoadingLayout footerLoadingView;
|
|
class InternalListView extends ListView implements EmptyViewMethodAccessor {
|
|
public InternalListView(Context context, AttributeSet attrs) {
|
super(context, attrs);
|
}
|
|
@Override
|
public void setEmptyView(View emptyView) {
|
PullToRefreshListView.this.setEmptyView(emptyView);
|
}
|
|
@Override
|
public void setEmptyViewInternal(View emptyView) {
|
super.setEmptyView(emptyView);
|
}
|
|
public ContextMenuInfo getContextMenuInfo() {
|
return super.getContextMenuInfo();
|
}
|
}
|
|
public PullToRefreshListView(Context context) {
|
super(context);
|
this.setDisableScrollingWhileRefreshing(false);
|
}
|
|
public PullToRefreshListView(Context context, int mode) {
|
super(context, mode);
|
this.setDisableScrollingWhileRefreshing(false);
|
}
|
|
public PullToRefreshListView(Context context, AttributeSet attrs) {
|
super(context, attrs);
|
this.setDisableScrollingWhileRefreshing(false);
|
}
|
|
@Override
|
public ContextMenuInfo getContextMenuInfo() {
|
return ((InternalListView) getRefreshableView()).getContextMenuInfo();
|
}
|
|
// public void setReleaseLabel(String releaseLabel) {
|
// super.setReleaseLabel(releaseLabel);
|
// if (null != headerLoadingView) {
|
// headerLoadingView.setReleaseLabel(releaseLabel);
|
// }
|
// if (null != footerLoadingView) {
|
// footerLoadingView.setReleaseLabel(releaseLabel);
|
// }
|
// }
|
//
|
// public void setPullLabel(String pullLabel) {
|
// super.setPullLabel(pullLabel);
|
//
|
// if (null != headerLoadingView) {
|
// headerLoadingView.setPullLabel(pullLabel);
|
// }
|
// if (null != footerLoadingView) {
|
// footerLoadingView.setPullLabel(pullLabel);
|
// }
|
// }
|
//
|
// public void setRefreshingLabel(String refreshingLabel) {
|
// super.setRefreshingLabel(refreshingLabel);
|
//
|
// if (null != headerLoadingView) {
|
// headerLoadingView.setRefreshingLabel(refreshingLabel);
|
// }
|
// if (null != footerLoadingView) {
|
// footerLoadingView.setRefreshingLabel(refreshingLabel);
|
// }
|
// }
|
|
@Override
|
protected final ListView createRefreshableView(Context context, AttributeSet attrs) {
|
ListView lv = new InternalListView(context, attrs);
|
// final int mode = this.getMode();
|
//
|
// // Loading View Strings
|
// String pullLabel = context.getString(R.string.pull_to_refresh_pull_label);
|
// String refreshingLabel = context.getString(R.string.pull_to_refresh_refreshing_label);
|
// String releaseLabel = context.getString(R.string.pull_to_refresh_release_label);
|
|
// Add Loading Views
|
// if (mode == MODE_PULL_DOWN_TO_REFRESH || mode == MODE_BOTH) {
|
// FrameLayout frame = new FrameLayout(context);
|
// headerLoadingView = new LoadingLayout(context, MODE_PULL_DOWN_TO_REFRESH, releaseLabel, pullLabel,
|
// refreshingLabel);
|
// frame.addView(headerLoadingView, FrameLayout.LayoutParams.FILL_PARENT,
|
// FrameLayout.LayoutParams.WRAP_CONTENT);
|
// headerLoadingView.setVisibility(View.GONE);
|
// lv.addHeaderView(frame);
|
// }
|
// if (mode == MODE_PULL_UP_TO_REFRESH || mode == MODE_BOTH) {
|
// FrameLayout frame = new FrameLayout(context);
|
// footerLoadingView = new LoadingLayout(context, MODE_PULL_UP_TO_REFRESH, releaseLabel, pullLabel,
|
// refreshingLabel);
|
// frame.addView(footerLoadingView, FrameLayout.LayoutParams.FILL_PARENT,
|
// FrameLayout.LayoutParams.WRAP_CONTENT);
|
// footerLoadingView.setVisibility(View.GONE);
|
// lv.addFooterView(frame);
|
// }
|
|
// Set it to this so it can be used in ListActivity/ListFragment
|
lv.setId(android.R.id.list);
|
return lv;
|
}
|
|
// @Override
|
// protected void setRefreshingInternal(boolean doScroll) {
|
// super.setRefreshingInternal(false);
|
//
|
// final LoadingLayout originalLoadingLayout, listViewLoadingLayout;
|
// final int selection, scrollToY;
|
//
|
// switch (getCurrentMode()) {
|
// case MODE_PULL_UP_TO_REFRESH:
|
// originalLoadingLayout = this.getFooterLayout();
|
// listViewLoadingLayout = this.footerLoadingView;
|
// selection = refreshableView.getCount() - 1;
|
// scrollToY = getScrollY() - getHeaderHeight();
|
// break;
|
// case MODE_PULL_DOWN_TO_REFRESH:
|
// default:
|
// originalLoadingLayout = this.getHeaderLayout();
|
// listViewLoadingLayout = this.headerLoadingView;
|
// selection = 0;
|
// scrollToY = getScrollY() + getHeaderHeight();
|
// break;
|
// }
|
//
|
// if (doScroll) {
|
// // We scroll slightly so that the ListView's header/footer is at the
|
// // same Y position as our normal header/footer
|
// this.setHeaderScroll(scrollToY);
|
// }
|
//
|
// // Hide our original Loading View
|
// originalLoadingLayout.setVisibility(View.INVISIBLE);
|
//
|
// // Show the ListView Loading View and set it to refresh
|
// listViewLoadingLayout.setVisibility(View.VISIBLE);
|
// listViewLoadingLayout.refreshing();
|
//
|
// if (doScroll) {
|
// // Make sure the ListView is scrolled to show the loading
|
// // header/footer
|
// refreshableView.setSelection(selection);
|
//
|
// // Smooth scroll as normal
|
// smoothScrollTo(0);
|
// }
|
// }
|
|
// @Override
|
// protected void resetHeader() {
|
//
|
// LoadingLayout originalLoadingLayout;
|
// LoadingLayout listViewLoadingLayout;
|
//
|
// int scrollToHeight = getHeaderHeight();
|
// final boolean doScroll;
|
//
|
// switch (getCurrentMode()) {
|
// case MODE_PULL_UP_TO_REFRESH:
|
// originalLoadingLayout = this.getFooterLayout();
|
// listViewLoadingLayout = footerLoadingView;
|
// doScroll = this.isReadyForPullUp();
|
// break;
|
// case MODE_PULL_DOWN_TO_REFRESH:
|
// default:
|
// originalLoadingLayout = this.getHeaderLayout();
|
// listViewLoadingLayout = headerLoadingView;
|
// scrollToHeight *= -1;
|
// doScroll = this.isReadyForPullDown();
|
// break;
|
// }
|
//
|
// // Set our Original View to Visible
|
// originalLoadingLayout.setVisibility(View.VISIBLE);
|
//
|
// // Scroll so our View is at the same Y as the ListView header/footer,
|
// // but only scroll if the ListView is at the top/bottom
|
// if (doScroll) {
|
// this.setHeaderScroll(scrollToHeight);
|
// }
|
//
|
// // Hide the ListView Header/Footer
|
// listViewLoadingLayout.setVisibility(View.GONE);
|
//
|
// super.resetHeader();
|
// }
|
|
}
|