I am using parse as baas , I was using below code to delete objects .But tommorow i came to know that this piece of code is not working .
@Override
public void onClick(View view) {
new AlertDialog.Builder(context).setIcon(R.drawable.main).setTitle("Delete this product ?")
.setMessage("Are you sure you want to Delete this product ?").setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("VendorInv");
query.whereEqualTo("objectId", details.getObjectId());
query.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
try {
object.delete(); // fixed part
object.saveInBackground(new SaveCallback() { // fixed part
@Override
public void done(ParseException e) {
if (e == null) {
vendorDetailsList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, vendorDetailsList.size());
count.setText(String.valueOf(vendorDetailsList.size()) + "/" + totalNo + " items are Online");
Toast.makeText(context, "Deleted", Toast.LENGTH_SHORT).show();
}
}
});
} catch (ParseException e1) {
Log.i("sand", e1.toString());
}
}
});
}
}).setNegativeButton("No", null).show();
}
});
}
Then as a contributor of parse android said than i fixed this part of code below
holder.cross.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new AlertDialog.Builder(context).setIcon(R.drawable.main).setTitle("Delete this product ?")
.setMessage("Are you sure you want to Delete this product ?").setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("VendorInv");
query.whereEqualTo("objectId", vendorDetailsList.get(position).getObjectId());
query.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
/* this part is changed */ object.deleteInBackground(new DeleteCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.i("sand", vendorDetailsList.get(position).getObjectId());
vendorDetailsList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, vendorDetailsList.size());
count.setText(String.valueOf(vendorDetailsList.size()) + "/" + totalNo + " items are Online");
Toast.makeText(context, "Deleted", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Not Deleted please check your network connection", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}).setNegativeButton("No", null).show();
}
});
Toast is printing deleted but still object is not deleted in database. I dont know where i am going wrong, but this is not helping me in deleting an object Any help would be greatly appreciated
Config your class VendorInv
on the server to be "Public Read and Write enabled"
and use next code:
ParseQuery<ParseObject> query = ParseQuery.getQuery("VendorInv");
query.getInBackground(vendorDetailsList.get(position).getObjectId(), new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if (object != null) {
object.deleteInBackground(new DeleteCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.i("sand", vendorDetailsList.get(position).getObjectId());
vendorDetailsList.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, vendorDetailsList.size());
count.setText(String.valueOf(vendorDetailsList.size()) + "/" + totalNo + " items are Online");
Toast.makeText(context, "Deleted", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Not Deleted please check your network connection", Toast.LENGTH_SHORT).show();
}
}
});
}
}
});