@Override protected void onPostExecute(APIResponse.CODE code) { super.onPostExecute(code); // android gets angry if you modify Views off the UI thread, so we do the actual View // manipulation here View view = fragment.getView(); if (view != null && activity != null) { ListViewAdapter adapter = new ListViewAdapter(activity, districts); TextView noDataText = (TextView) view.findViewById(R.id.no_data); // If there's no data in the adapter or if we can't download info // off the web, display a message. if ((code == APIResponse.CODE.NODATA && !ConnectionDetector.isConnectedToInternet(activity)) || (!requestParams.forceFromCache && adapter.values.isEmpty())) { noDataText.setText(R.string.no_district_list); noDataText.setVisibility(View.VISIBLE); } else { ListView eventList = (ListView) view.findViewById(R.id.list); Parcelable state = eventList.onSaveInstanceState(); eventList.setAdapter(adapter); noDataText.setVisibility(View.GONE); eventList.onRestoreInstanceState(state); } if (code == APIResponse.CODE.OFFLINECACHE) { activity.showWarningMessage(fragment.getString(R.string.warning_using_cached_data)); } view.findViewById(R.id.progress).setVisibility(View.GONE); view.findViewById(R.id.list).setVisibility(View.VISIBLE); if (code == APIResponse.CODE.LOCAL && !isCancelled()) { /** * The data has the possibility of being updated, but we at first loaded what we have cached * locally for performance reasons. Thus, fire off this task again with a flag saying to * actually load from the web */ requestParams.forceFromCache = false; PopulateDistrictList second = new PopulateDistrictList(fragment, requestParams); fragment.updateTask(second); second.execute(year); } else if (activity != null) { // Show notification if we've refreshed data. Log.d(Constants.REFRESH_LOG, "Event list refresh complete"); activity.notifyRefreshComplete(fragment); } AnalyticsHelper.sendTimingUpdate( activity, System.currentTimeMillis() - startTime, "district list", Integer.toString(year)); } }
public PopulateDistrictList(DistrictListFragment fragment, RequestParams requestParams) { this.requestParams = requestParams; this.fragment = fragment; activity = (RefreshableHostActivity) fragment.getActivity(); }