// Invoked by execute() method of this object @Override protected List<HashMap<String, String>> doInBackground(String... jsonData) { List<HashMap<String, String>> places = null; PlaceJSONParser placeJsonParser = new PlaceJSONParser(); try { jObject = new JSONObject(jsonData[0]); /** Getting the parsed data as a List construct */ places = placeJsonParser.parse(jObject); } catch (Exception e) { Log.d("Exception", e.toString()); } return places; }
@Override public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { Cursor c = null; PlaceJSONParser parser = new PlaceJSONParser(); PlaceDetailsJSONParser detailsParser = new PlaceDetailsJSONParser(); String jsonString = ""; String jsonPlaceDetails = ""; List<HashMap<String, String>> list = null; List<HashMap<String, String>> detailsList = null; MatrixCursor mCursor = null; switch (mUriMatcher.match(uri)) { case SEARCH: // Defining a cursor object with columns description, lat and lng mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"}); // Create a parser object to parse places in JSON format parser = new PlaceJSONParser(); // Create a parser object to parse place details in JSON format detailsParser = new PlaceDetailsJSONParser(); // Get Places from Google Places API jsonString = getPlaces(selectionArgs); try { // Parse the places ( JSON => List ) list = parser.parse(new JSONObject(jsonString)); // Finding latitude and longitude for each places using Google Places Details API for (int i = 0; i < list.size(); i++) { HashMap<String, String> hMap = (HashMap<String, String>) list.get(i); detailsParser = new PlaceDetailsJSONParser(); // Get Place details jsonPlaceDetails = getPlaceDetails(hMap.get("reference")); // Parse the details ( JSON => List ) detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails)); // Creating cursor object with places for (int j = 0; j < detailsList.size(); j++) { HashMap<String, String> hMapDetails = detailsList.get(j); // Adding place details to cursor mCursor.addRow( new String[] { hMap.get("description"), hMapDetails.get("lat"), hMapDetails.get("lng") }); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } c = mCursor; break; case SUGGESTIONS: // Defining a cursor object with columns id, SUGGEST_COLUMN_TEXT_1, // SUGGEST_COLUMN_INTENT_EXTRA_DATA mCursor = new MatrixCursor( new String[] { "_id", SearchManager.SUGGEST_COLUMN_TEXT_1, SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA }); // Creating a parser object to parse places in JSON format parser = new PlaceJSONParser(); // Get Places from Google Places API jsonString = getPlaces(selectionArgs); try { // Parse the places ( JSON => List ) list = parser.parse(new JSONObject(jsonString)); // Creating cursor object with places for (int i = 0; i < list.size(); i++) { HashMap<String, String> hMap = (HashMap<String, String>) list.get(i); // Adding place details to cursor mCursor.addRow( new String[] {Integer.toString(i), hMap.get("description"), hMap.get("reference")}); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } c = mCursor; break; case DETAILS: // Defining a cursor object with columns description, lat and lng mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"}); detailsParser = new PlaceDetailsJSONParser(); jsonPlaceDetails = getPlaceDetails(selectionArgs[0]); try { detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails)); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } for (int j = 0; j < detailsList.size(); j++) { HashMap<String, String> hMapDetails = detailsList.get(j); mCursor.addRow( new String[] { hMapDetails.get("formatted_address"), hMapDetails.get("lat"), hMapDetails.get("lng") }); } c = mCursor; break; } return c; }
@Override public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { Cursor c = null; PlaceJSONParser parser; PlaceDetailsJSONParser detailsParser; String jsonString = ""; String jsonPlaceDetails = ""; List<HashMap<String, String>> list = null; List<HashMap<String, String>> detailsList = null; MatrixCursor mCursor = null; switch (mUriMatcher.match(uri)) { case SEARCH: mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"}); parser = new PlaceJSONParser(); detailsParser = new PlaceDetailsJSONParser(); jsonString = getPlaces(selectionArgs); try { list = parser.parse(new JSONObject(jsonString)); for (int i = 0; i < list.size(); i++) { HashMap<String, String> hMap = (HashMap<String, String>) list.get(i); jsonPlaceDetails = getPlaceDetails(hMap.get("reference")); detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails)); for (int j = 0; j < detailsList.size(); j++) { HashMap<String, String> hMapDetails = detailsList.get(j); mCursor.addRow( new String[] { hMap.get("description"), hMapDetails.get("lat"), hMapDetails.get("lng") }); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } c = mCursor; break; case SUGGESTIONS: mCursor = new MatrixCursor( new String[] { "_id", SearchManager.SUGGEST_COLUMN_TEXT_1, SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA }); parser = new PlaceJSONParser(); jsonString = getPlaces(selectionArgs); try { list = parser.parse(new JSONObject(jsonString)); for (int i = 0; i < list.size(); i++) { HashMap<String, String> hMap = (HashMap<String, String>) list.get(i); mCursor.addRow( new String[] {Integer.toString(i), hMap.get("description"), hMap.get("reference")}); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } c = mCursor; break; case DETAILS: mCursor = new MatrixCursor(new String[] {"description", "lat", "lng"}); detailsParser = new PlaceDetailsJSONParser(); jsonPlaceDetails = getPlaceDetails(selectionArgs[0]); try { detailsList = detailsParser.parse(new JSONObject(jsonPlaceDetails)); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } for (int j = 0; j < detailsList.size(); j++) { HashMap<String, String> hMapDetails = detailsList.get(j); mCursor.addRow( new String[] { hMapDetails.get("formatted_address"), hMapDetails.get("lat"), hMapDetails.get("lng") }); } c = mCursor; break; } return c; }