'Reload fragment from Adapter class

I have BottomNavigationView where i display fragments and i have adapter named FavoriteRecViewAdapter related on FavoritFragment.java, i need to reload FavoritFragment if one of favorites was deleted

I have BottomNavigationView where i display fragments and i have adapter named FavoriteRecViewAdapter related on FavoritFragment.java, i need to reload FavoritFragment if one of favorites was deleted

sorry for spam stackoverflow forced me ;)

FavoritFragment.java :

public class FavoriFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";


    private List<Favorite> favorites;
    private RecyclerView favoriteRecView;
    private FloatingActionButton fabAddFavorite;

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public FavoriFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment FavoriFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static FavoriFragment newInstance(String param1, String param2) {
        FavoriFragment fragment = new FavoriFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.fragment_favori, container, false);

        favoriteRecView = (RecyclerView) rootView.findViewById(R.id.favoriteRecView);
        fabAddFavorite = rootView.findViewById(R.id.fabAddFavorite);
        favorites = new ArrayList<>();

        Retrofit retrofit = RetrofitClientInstance.getRetrofitInstance(getContext());

        final FavoriteAPI favoriteAPI =  retrofit.create(FavoriteAPI.class);

        Call<List<Favorite>> call = favoriteAPI.getFavorites();

        call.enqueue(new Callback<List<Favorite>>() {
            @Override
            public void onResponse(Call<List<Favorite>> call, Response<List<Favorite>> response) {
                if(response.code() != 200) {
                    Toast.makeText(getContext(), "Something wrong", Toast.LENGTH_SHORT).show();
                } else {
                    List<Favorite> favoriteList = response.body();

                    for(Favorite favorite : favoriteList) {
                        favorites.add(favorite);
                    }

                    initData(favorites);
                }
            }

            @Override
            public void onFailure(Call<List<Favorite>> call, Throwable t) {

            }
        });

        fabAddFavorite.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getContext(), AddFavoriActivity.class);
                getContext().startActivity(intent);
            }
        });

        return rootView;
    }

    private void initData(List<Favorite> favorites) {
        FavoriteRecViewAdapter favoriteRecViewAdapter = new FavoriteRecViewAdapter(favorites, getContext());

        favoriteRecView.setAdapter(favoriteRecViewAdapter);
        favoriteRecView.setLayoutManager(new LinearLayoutManager(getContext()));
    }
}

FavoriteRecViewAdapter.java :

public class FavoriteRecViewAdapter extends RecyclerView.Adapter<FavoriteRecViewAdapter.viewHolder>{

    private List<Favorite> favorites;
    private Context mContext;

    public FavoriteRecViewAdapter(List<Favorite> favorites, Context mContext) {
        this.favorites = favorites;
        this.mContext = mContext;
    }

    public FavoriteRecViewAdapter(List<Favorite> favorites) {
        this.favorites = favorites;
    }

    @NonNull
    @Override
    public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.favorites_list_item, parent, false);
        return new viewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull viewHolder holder, int position) {
        holder.favoriteLibelle.setText(favorites.get(position).getCarte().getLibelle());
        holder.favoriteNumero.setText(String.valueOf(favorites.get(position).getCarte().getNumero()));
        holder.favoriteComments.setText(favorites.get(position).getComments());
        holder.favoriteDate.setText(favorites.get(position).getDate());

        holder.deleteFavoriteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String msg = "are your sure ! you want to delete " +
                        favorites.get(holder.getAdapterPosition()).getCarte().getLibelle() +
                        " from favorites";

                new MaterialAlertDialogBuilder(mContext)
                        .setTitle("Delete favorite")
                        .setMessage(msg)
                        .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                            }
                        })
                        .setPositiveButton("Yes delete it", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Retrofit retrofit = RetrofitClientInstance.getRetrofitInstance(mContext);

                                final FavoriteAPI favoriteAPI = retrofit.create(FavoriteAPI.class);

                                Call<String> call = favoriteAPI.deleteFavorite(
                                        favorites.get(holder.getAdapterPosition()).getId()
                                );

                                call.enqueue(new Callback<String>() {
                                    @Override
                                    public void onResponse(Call<String> call, Response<String> response) {
                                        if(response.code() == 204) {
                                            showSnackBarSuccess("Favorite was delete successfully");

                                        } else{
                                            showSnackBarError("Some thing wrong please try again !");
                                        }
                                    }

                                    @Override
                                    public void onFailure(Call<String> call, Throwable t) {

                                    }
                                });
                            }
                        })
                        .show();
            }
        });
    }

    @Override
    public int getItemCount() {
        return favorites.size();
    }

    public class viewHolder extends RecyclerView.ViewHolder{

        private TextView favoriteLibelle;
        private TextView favoriteNumero;
        private TextView favoriteComments;
        private TextView favoriteDate;

        private Button deleteFavoriteBtn;

        public viewHolder(@NonNull View itemView) {
            super(itemView);

            favoriteLibelle = itemView.findViewById(R.id.favoriteLibelle);
            favoriteNumero = itemView.findViewById(R.id.favoriteNumero);
            favoriteComments = itemView.findViewById(R.id.favoriteComments);
            favoriteDate = itemView.findViewById(R.id.favoriteDate);

            deleteFavoriteBtn = itemView.findViewById(R.id.deleteFavoriteBtn);
        }
    }

    private void showSnackBarError(String msg) {

        Snackbar.make(((Activity) mContext).findViewById(android.R.id.content), msg, Snackbar.LENGTH_SHORT)
                .setTextColor(ContextCompat.getColor(mContext,R.color.white))
                .setBackgroundTint(ContextCompat.getColor(mContext,R.color.danger))
                .show();
    }

    private void showSnackBarSuccess(String msg) {

        Snackbar.make(((Activity) mContext).findViewById(android.R.id.content), msg, Snackbar.LENGTH_SHORT)
                .show();
    }
}

Thanks for any help ;)



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source