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