Deleting Firestore data from another fragment android

Viewed 93

I am working on an application where I have a wishlist checkbox(heart icon) on my recyclerview items at Home Fragment, So when the user clicks on the heart icon it adds that particular item to the Wishlist Fragment, and when the user again clicks it, I want it to delete the item from the wishlist fragment. While adding the item it is working properly but when I try to delete it, it is not working and gives me a null pointer error.

CODE IS HERE

  holder.wishlist.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

            Boolean isCheck = compoundButton.isChecked();

            //CODE TO ADD THE ITEM TO THE WISHLIST THROUGH HOME FRAGMENT
            if(isCheck)
            {

                firebaseFirestore.collection("wishlistDetails").document(uid).set(wishMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {

                        if (task.isSuccessful())
                        {
                            holder.wishlist.setButtonDrawable(R.drawable.ic_favorite_filled);
                            Toast.makeText(context, "item added to wishlist" + pos , Toast.LENGTH_SHORT).show();


                        }
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {


                    }
                });

              //CODE TO DELETE THE ITEM FROM WISHLIST THROUGH HOME FRAGMENT  
            }else {

                firebaseFirestore.collection("wishlistDetails").document(wishlist_models.get(position).getUid())
                        .delete()
                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {

                                Toast.makeText(context, "item removed from wishlist", Toast.LENGTH_SHORT).show();

                            }
                        }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {

                        Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
            }

WISHLIST MODEL CODE

public class Wishlist_Model {

private List<String> images;
private String name;
private String email;
private String delete;
private String uid;

public Wishlist_Model()  {
}

public Wishlist_Model(List<String> images, String name, String email, String delete, String uid) {
    this.images = images;
    this.name = name;
    this.email = email;
    this.delete = delete;
    this.uid = uid;

}



public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getDelete() {
    return delete;
}

public void setDelete(String delete) {
    this.delete = delete;
}

public List<String> getImages() {
    return images;
}

public void setImages(List<String> images) {
    this.images = images;
}

public String getUid() {
    return uid;
}

public void setUid(String uid) {
    this.uid = uid;
}

}

FIRESTORE COLLECTION

enter image description here

ERROR IT IS THROWING

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
1 Answers

Shift your this code from HomeFragment to Wishlist Fragment:

}else {

    firebaseFirestore.collection("wishlistDetails").document(wishlist_models.get(position).getUid())
            .delete()
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {

                    Toast.makeText(context, "item removed from wishlist", Toast.LENGTH_SHORT).show();

                }
            }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {

            Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });
}
Related