private void loadDataSkippingRoundTripIfCached() { clearResults(); Request request = getRequestForLoadData(getSession()); if (request != null) { onLoadingData(); loadingStrategy.startLoading(request); } }
@Override public void onDetach() { super.onDetach(); listView.setOnScrollListener(null); listView.setAdapter(null); loadingStrategy.detach(); sessionTracker.stopTracking(); }
private void clearResults() { if (adapter != null) { boolean wasSelection = !selectionStrategy.isEmpty(); boolean wasData = !adapter.isEmpty(); loadingStrategy.clearResults(); selectionStrategy.clear(); adapter.notifyDataSetChanged(); // Tell anyone who cares the data and selection has changed, if they have. if (wasData && onDataChangedListener != null) { onDataChangedListener.onDataChanged(PickerFragment.this); } if (wasSelection && onSelectionChangedListener != null) { onSelectionChangedListener.onSelectionChanged(PickerFragment.this); } } }
@Override public void onActivityCreated(final Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); sessionTracker = new SessionTracker( getActivity(), new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { if (!session.isOpened()) { // When a session is closed, we want to clear out our data so it is not visible to // subsequent users clearResults(); } } }); setSettingsFromBundle(savedInstanceState); loadingStrategy = createLoadingStrategy(); loadingStrategy.attach(adapter); selectionStrategy = createSelectionStrategy(); selectionStrategy.readSelectionFromBundle(savedInstanceState, SELECTION_BUNDLE_KEY); // Should we display a title bar? (We need to do this after we've retrieved our bundle // settings.) if (showTitleBar) { inflateTitleBar((ViewGroup) getView()); } if (activityCircle != null && savedInstanceState != null) { boolean shown = savedInstanceState.getBoolean(ACTIVITY_CIRCLE_SHOW_KEY, false); if (shown) { displayActivityCircle(); } else { // Should be hidden already, but just to be sure. hideActivityCircle(); } } }
/** * Causes the picker to load data from the service and display it to the user. * * @param forceReload if true, data will be loaded even if there is already data being displayed * (or loading); if false, data will not be re-loaded if it is already displayed (or loading) */ public void loadData(boolean forceReload) { if (!forceReload && loadingStrategy.isDataPresentOrLoading()) { return; } loadDataSkippingRoundTripIfCached(); }