Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You can check this link for xml parsing from xml. <a href="http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/" rel="nofollow">http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/</a></p> <p>In your activity you are developing the <code>AsyncTask</code> but you forgot to override <code>onPreExecute</code> method. See this example for how to develop <code>AsyncTask</code> in your activity.</p> <pre><code>package com.androidhive.jsonparsing; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class AndroidJSONParsingActivity extends ListActivity { // url to make request private static String url = "http://api.androidhive.info/contacts/"; // JSON Node names private static final String TAG_CONTACTS = "contacts"; private static final String TAG_ID = "id"; private static final String TAG_NAME = "name"; private static final String TAG_EMAIL = "email"; private static final String TAG_ADDRESS = "address"; private static final String TAG_GENDER = "gender"; private static final String TAG_PHONE = "phone"; private static final String TAG_PHONE_MOBILE = "mobile"; private static final String TAG_PHONE_HOME = "home"; private static final String TAG_PHONE_OFFICE = "office"; static InputStream is = null; static JSONObject jObj = null; static String json = ""; // contacts JSONArray JSONArray contacts = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new GetEventsTask().execute(""); } protected class GetEventsTask extends AsyncTask&lt;String, Integer, ArrayList&lt;HashMap&lt;String, String&gt;&gt;&gt; { protected ArrayList&lt;HashMap&lt;String, String&gt;&gt; contactList; private final ProgressDialog dialog = new ProgressDialog( AndroidJSONParsingActivity.this); //PreExecute Method protected void onPreExecute() { this.dialog.setMessage("Loading, Please Wait.."); this.dialog.setCancelable(false); this.dialog.show(); } //doInBackground Method @Override protected ArrayList&lt;HashMap&lt;String, String&gt;&gt; doInBackground( String... params) { contactList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); // Making HTTP request try { // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // try parse the string to a JSON object try { jObj = new JSONObject(json); Log.i("json objects",""+json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } try { // Getting Array of Contacts contacts = jObj.getJSONArray(TAG_CONTACTS); // looping through All Contacts for (int i = 0; i &lt; contacts.length(); i++) { JSONObject c = contacts.getJSONObject(i); // Storing each json item in variable String id = c.getString(TAG_ID); String name = c.getString(TAG_NAME); String email = c.getString(TAG_EMAIL); String address = c.getString(TAG_ADDRESS); String gender = c.getString(TAG_GENDER); // Phone number is agin JSON Object JSONObject phone = c.getJSONObject(TAG_PHONE); String mobile = phone.getString(TAG_PHONE_MOBILE); String home = phone.getString(TAG_PHONE_HOME); String office = phone.getString(TAG_PHONE_OFFICE); // creating new HashMap HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); // adding each child node to HashMap key =&gt; value map.put(TAG_ID, id); map.put(TAG_NAME, name); map.put(TAG_EMAIL, email); map.put(TAG_PHONE_MOBILE, mobile); // adding HashList to ArrayList contactList.add(map); } } catch (JSONException e) { e.printStackTrace(); } return contactList; } //onPostExecute Method protected void onPostExecute(ArrayList&lt;HashMap&lt;String, String&gt;&gt; result) { ListAdapter adapter = new SimpleAdapter(getApplicationContext(), contactList, R.layout.list_item, new String[] { TAG_NAME, TAG_EMAIL, TAG_PHONE_MOBILE }, new int[] { R.id.name, R.id.email, R.id.mobile }); // selecting single ListView item ListView lv = getListView(); lv.setAdapter(adapter); // Launching new screen on Selecting Single ListItem lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) { // getting values from selected ListItem String name = ((TextView) view.findViewById(R.id.name)).getText().toString(); String cost = ((TextView) view.findViewById(R.id.email)).getText().toString(); String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString(); // Starting new intent Intent in = new Intent(getApplicationContext(),SingleMenuItemActivity.class); in.putExtra(TAG_NAME, name); in.putExtra(TAG_EMAIL, cost); in.putExtra(TAG_PHONE_MOBILE, description); startActivity(in); } }); if (this.dialog.isShowing()) { this.dialog.dismiss(); } } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload