I'm having a lot of trouble deleting a marker from my database, specifically the table of markers. Currently, I'm creating a new MapsMarker (Object seen below) and getting the long result by inserting it into my table, then using this result to get the ID for deletion. But this isn't working since using the .insert method adds an extra marker to my database. So my question is, how can I properly delete the markers from the database without (or with, either way works) the use of .insert, since this adds a new marker to my database.
Here is my AddMarker method:
/**
* Method for adding a marker to the database and returning its ID if needed (for deletion, find, etc.)
* @param marker
* @return
*/
public long addMapsMarker(MapsMarker marker) {
ContentValues values = new ContentValues(); //Dont .put COLUMN_MARKER_ID because it is autoincrementing
values.put(DBQueryModelHelper.COLUMN_LAT, marker.getLat());
values.put(DBQueryModelHelper.COLUMN_LONGITUDE, marker.getLong());
long result = SQDatabase.insert(DBQueryModelHelper.TABLE_LOCATION, null, values);
//marker.setId(result);
marker.setId(result - 1); //sets the added marker ID to the row ID where it was inserted (same value as the autoincrementing ID)
long bb = marker.getId();
return result;
}
My delete method:
/**
* Method for deleting a marker, currently deletes from database but marker is reloaded.
* @param marker
*/
public void deleteMapsMarker(MapsMarker marker){
long id = marker.getId();
SQDatabase.delete(DBQueryModelHelper.TABLE_LOCATION, DBQueryModelHelper.COLUMN_MARKER_ID + "=?",
new String[]{Long.toString(id)});
}
My MapsMarker object is an object that holds a latitude and longitude, but also has a private id and all the getters and setters for these fields.
And here is my Map Activity where I am attempting the delete:
public void setUsermarker() {
mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(final Marker marker) {
new AlertDialog.Builder(MapsActivity.this)
.setMessage("View imagery or delete this marker?")
//Delete user marker
.setPositiveButton("Delete Marker", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
marker.remove();
MapsMarker markerforDelete = new MapsMarker(marker.getPosition().latitude, marker.getPosition().longitude);
long tablerowid = MarkerHelper.addMapsMarker(markerforDelete);
markerforDelete.setId(tablerowid);
MarkerHelper.deleteMapsMarker(markerforDelete);
}
})
.setNegativeButton("View 3D", new DialogInterface.OnClickListener() {
// Start 3D view activity
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(MapsActivity.this, BuildingViewActivity.class);
startActivity(intent);
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
return true;
}
});
}
Aucun commentaire:
Enregistrer un commentaire