lvDestinations.setOnItemClickListener(new AdapterView.OnItemClickListener() { //TODO add to car route on leaving screen @RequiresApi(api = Build.VERSION_CODES.KITKAT) @Override public void onItemClick(AdapterView parent, View view, int position, long id) { POIListAdapter adapter; adapter = (POIListAdapter) lvDestinations.getAdapter(); JSONObject jsonObject = adapter.getItem(position); //retrieve clicked object from adapter JSONObject newJsonObject = null; try { newJsonObject = new JSONObject(String.valueOf(jsonObject)); //create a copy of old json object } catch (JSONException e) { e.printStackTrace(); } car.removeTextType(); try { if(adapter.getItem(position).getBoolean("selected")){ newJsonObject.put("selected", false); car.removeDest(jsonObject.toString()); } else{ newJsonObject.put("selected", true); car.addDest(jsonObject); } } catch (JSONException e) { e.printStackTrace(); } adapter.remove(jsonObject); adapter.insert(newJsonObject, position); } });