'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 |
|---|
