Search code examples
androidparse-platform

Parse objects are not deleting


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


Solution

  • 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();
                            }
                        }
                    });
                }
            }
        });