Der er to problemer her (baseret på dit projekt)
Først (gemmer tilstand for bogmærke Imageview )
I adapteren skal du oprette en metode, der kontrollerer, om et bestemt produkt findes i SharedPreferences
public boolean checkFavoriteItem(Product checkProduct) { boolean check =false; List-favoritter =sharedPreference.getFavorites(null, mContext); if (favoritter !=null) { for (Produktprodukt:favoritter) { if (product.equals(checkProduct)) { check =true; pause; } } } returcheck;}
Indvendig adapter kontroller, om et produkt findes i delte præferencer, og sæt derefter bogmærket trækbar og sæt et tag
if (checkFavoriteItem(product)) { holder.favoriteImg.setImageResource(R.mipmap.bookmarked); holder.favoriteImg.setTag("bogmærket"); } andet { holder.favoriteImg.setImageResource(R.mipmap.bookmark_border); holder.favoriteImg.setTag("bogmærkegrænse"); }
Derefter inde i favOnClick tilbagekaldsmetoden
@Override public boolean favOnClick(int position ,View v) { Product product =(Product) productList.get(position); ImageView-knap =(ImageView) v.findViewById(R.id.favImage); String tag =button.getTag().toString(); if (tag.equalsIgnoreCase("bogmærke_grænse")) { sharedPreference.addFavorite(aktivitet,produkt); Toast.makeText(activity,"Tilføjet til favoritter",Toast.LENGTH_SHORT).show(); button.setTag("bogmærket"); button.setImageResource(R.mipmap.bookmarked); } andet { sharedPreference.removeFavorite(aktivitet,produkt); button.setTag("bogmærkegrænse"); button.setImageResource(R.mipmap.bookmark_border); Toast.makeText(activity,"Removed from Favorites",Toast.LENGTH_SHORT).show(); } returner sand; }
Anden (få dit yndlingsprodukt, og send det til "FAVORITE"-fragmentet )
Inde i getFavorite-metoden, tilføj en String-parameter. I dit "FAVORITE"-fragment med processFinish(dit AsyncResponse) kald din getFavorite for at få din favoritproduktliste, og indstil derefter din adapter:
Kontekst mContext;`mContext =getContext();`@Overridepublic void processFinish(String s) { productList =sharedPreference.getFavorites(s, mContext); BindDictionary dict =ny BindDictionary(); dict.addStringField(R.id.tvName, new StringExtractor() { @Override public String getStringValue(Product product, int position) { return product.name; } }); dict.addStringField(R.id.tvDescription, new StringExtractor() { @Override public String getStringValue(Produktprodukt, int position) { return product.description; } }); dict.addStringField(R.id.tvQty, new StringExtractor() { @Override public String getStringValue(Product product, int position) { return "" + product.qty; } }); adapter =new FunDapter<>(getActivity(), productList, R.layout.d_layout_list_d, dict); lvProduct.setAdapter(adapter);}