title: Delete Listview item with Async Class?
body: <p>I've got my listview which displays my database entries from my localhost db. I want to delete a row every time I click the listview item. Then the counter updates and the list is refreshed. Any ideas?</p>
  
  <p>Class:</p>
  
  <pre><code>public class ViewAllLocations extends ListActivity {
  
  String id;
  
  // Progress Dialog
  private ProgressDialog pDialog;
  
  // JSON parser class
  JSONParser jsonParser = new JSONParser();
  
  ArrayList&lt;HashMap&lt;String, String&gt;&gt; profileList;
  
  // url to get all products list
  private static String url_all_profile = "http://MYIP:8888/android_connect/get_all_location.php";
  // url to delete product
  private static final String url_delete_profile = "http://MYIP:8888/android_connect/delete_location.php";
  
  // JSON Node names
  private static final String TAG_SUCCESS = "success";
  private static final String TAG_LOCATION = "Location";
  private static final String TAG_ID = "id";
  private static final String TAG_LATITUDE = "latitude";
  private static final String TAG_LONGITUDE = "longitude";
  
  
  // products JSONArray
  JSONArray userprofile = null;
  
  TextView locationCount;
  int count = 0;
  Button deleteLocation;
  
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_view_all_locations);
      // Hashmap for ListView
      profileList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
      deleteLocation = (Button) findViewById(R.id.deleteLocation);
      locationCount = (TextView) findViewById(R.id.locationCount);
  
      // Loading products in Background Thread
          new LoadAllLocation().execute();
  
  
  
    // Get listview
          ListView lo = getListView();
          lo.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
                  new DeleteLocation().execute();
                  profileList.remove(position);
              }
          });
      }
  
      /*****************************************************************
       * Background Async Task to Delete Product
       * */
      class DeleteLocation extends AsyncTask&lt;String, String, String&gt; {
  
  
          /**
       * Before starting background thread Show Progress Dialog
       * */
      @Override
      protected void onPreExecute() {
          super.onPreExecute();
          pDialog = new ProgressDialog(ViewAllLocations.this);
          pDialog.setMessage("Deleting Location...");
          pDialog.setIndeterminate(false);
          pDialog.setCancelable(true);
          pDialog.show();
      }
  
      /**
       * Deleting product
       * */
      protected String doInBackground(String... args) {
  
          // Check for success tag
          int success;
          try {
              // Building Parameters
              List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
              params.add(new BasicNameValuePair("id", id));
  
              // getting product details by making HTTP request
              JSONObject json = jsonParser.makeHttpRequest(
                      url_delete_profile, "POST", params);
  
              // check your log for json response
              Log.d("Delete Product", json.toString());
  
              // json success tag
              success = json.getInt(TAG_SUCCESS);
              if (success == 1) {
                  // product successfully deleted
                  // notify previous activity by sending code 100
                 // Intent i = getIntent();
                  // send result code 100 to notify about product deletion
                  //setResult(100, i);
                  Toast.makeText(getApplicationContext(), "Location Deleted",
                          Toast.LENGTH_SHORT).show();
                  finish();
              }
          } catch (JSONException e) {
              e.printStackTrace();
          }
  
          return null;
      }
  
  
      /**
       * After completing background task Dismiss the progress dialog
       * **/
      protected void onPostExecute(String file_url) {
          // dismiss the dialog once product deleted
          pDialog.dismiss();
  
      }
  
  }
  
  /**
   * Background Async Task to Load all product by making HTTP Request
   * */
  class LoadAllLocation extends AsyncTask&lt;String, String, String&gt; {
  
      /**
       * Before starting background thread Show Progress Dialog
       * */
      @Override
      protected void onPreExecute() {
          super.onPreExecute();
          pDialog = new ProgressDialog(ViewAllLocations.this);
          pDialog.setMessage("Loading Locations. Please wait...");
          pDialog.setIndeterminate(false);
          pDialog.setCancelable(false);
          pDialog.show();
      }
  
      /**
       * getting All products from url
       * */
      protected String doInBackground(String... args) {
          // Building Parameters
          List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
          // getting JSON string from URL
          JSONObject json = jsonParser.makeHttpRequest(url_all_profile, "GET", params);
  
          // Check your log cat for JSON reponse
          Log.d("All Profiles: ", json.toString());
  
          try {
              // Checking for SUCCESS TAG
              int success = json.getInt(TAG_SUCCESS);
  
              if (success == 1) {
                  // products found
                  // Getting Array of Products
                  userprofile = json.getJSONArray(TAG_LOCATION);
  
                  // looping through All Products
                  for (int i = 0; i &lt; userprofile.length(); i++) {
                      JSONObject c = userprofile.getJSONObject(i);
  
                      // Storing each json item in variable
                      String id = c.getString(TAG_ID);
                      String latitude = c.getString(TAG_LATITUDE);
                      String longitude = c.getString(TAG_LONGITUDE);
  
  
                      // 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_LATITUDE, latitude);
                      map.put(TAG_LONGITUDE, longitude);
  
  
                      // adding HashList to ArrayList
                      profileList.add(map);
                  }
              } else {
                  // no products found
                  // Launch Add New product Activity
                  Intent i = new Intent(getApplicationContext(),
                          UserLocation.class);
                  // Closing all previous activities
                  i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                  startActivity(i);
              }
          } catch (JSONException e) {
              e.printStackTrace();
          }
  
          return null;
      }
  
      /**
       * After completing background task Dismiss the progress dialog
       * **/
      protected void onPostExecute(String file_url) {
          // dismiss the dialog after getting all products
          pDialog.dismiss();
          // updating UI from Background Thread
          runOnUiThread(new Runnable() {
              public void run() {
                  /**
                   * Updating parsed JSON data into ListView
                   * */
  
  
                   ListAdapter adapter = new SimpleAdapter(
                          ViewAllLocations.this, profileList,
                          R.layout.locationitem, new String[] { TAG_ID,
                          TAG_LATITUDE, TAG_LONGITUDE},
                          new int[] { R.id.id, R.id.latitude, R.id.longitude});
                  // updating listview
                  setListAdapter(adapter);
                  locationCount.setText(""+profileList.size());
  
              }
          });
  
      }
  
  }
  </code></pre>