@Override protected List<MovieInfo> doInBackground(String... params) { // Decode sorting preference from param[0] String sortby = (params[0].equals(associatedAdapter.getContext().getString(R.string.pref_sort_popular)) ? "popularity.desc" : params[0].equals(associatedAdapter.getContext().getString(R.string.pref_sort_rating)) ? "vote_average.desc" : ""); List<MovieInfo> movieInfos = null; try { // Build URI for querying TheMovieDB Uri builtUri = Uri.parse(TMDB_BASE_URL) .buildUpon() .appendPath(TMDB_DISCOVER_PARAM1) .appendPath(TMDB_DISCOVER_PARAM2) .appendQueryParameter(TMDB_SORT, sortby) .appendQueryParameter(TMDB_KEY, MY_KEY) .build(); URL url = new URL(builtUri.toString()); // Log.v(LOG_TAG, "TMDB movie info url: " + url.toString()); // Call TMDB String jsonString = doCallJson(url); // Loop through result and populate movie info movieInfos = new ArrayList<MovieInfo>(); JSONObject json = new JSONObject(jsonString); JSONArray jArray = json.getJSONArray("results"); for (int i = 0; i < jArray.length(); i++) { JSONObject oneMovie = jArray.getJSONObject(i); MovieInfo movieInfo = new MovieInfo(); movieInfo.imageUrl = TMDB_IMAGE_URL + oneMovie.getString("poster_path"); movieInfo.originalTitle = ensureGoodString(oneMovie.getString("original_title")); movieInfo.plotSynopsis = ensureGoodString(oneMovie.getString("overview")); movieInfo.rating = ensureGoodString(oneMovie.getString("vote_average")); movieInfo.releaseDate = ensureGoodString(oneMovie.getString("release_date")); movieInfos.add(movieInfo); // Log.v(LOG_TAG, "Added movie: " + movieInfo.originalTitle); } } catch (Exception e) { Log.e(LOG_TAG, "Error", e); } return movieInfos; }