यहां दो समस्याएं हैं (आपके प्रोजेक्ट के आधार पर)
पहले (बुकमार्क छविदृश्य की स्थिति सहेजना )
एडेप्टर में एक विधि बनाएं जो जांचता है कि कोई विशेष उत्पाद SharedPreferences में मौजूद है या नहीं
public boolean checkFavoriteItem(Product checkProduct) {
boolean check = false;
List<Product> favorites = sharedPreference.getFavorites(null, mContext);
if (favorites != null) {
for (Product product : favorites) {
if (product.equals(checkProduct)) {
check = true;
break;
}
}
}
return check;
}
एडॉप्टर के अंदर जांचें कि क्या कोई उत्पाद साझा प्राथमिकताओं में मौजूद है, फिर बुकमार्क किया गया . सेट करें खींचने योग्य और एक टैग सेट करें
if (checkFavoriteItem(product)) {
holder.favoriteImg.setImageResource(R.mipmap.bookmarked);
holder.favoriteImg.setTag("bookmarked");
} else {
holder.favoriteImg.setImageResource(R.mipmap.bookmark_border);
holder.favoriteImg.setTag("bookmark_border");
}
फिर favOnClick कॉलबैक विधि के अंदर
@Override
public boolean favOnClick(int position ,View v) {
Product product = (Product) productList.get(position);
ImageView button = (ImageView) v.findViewById(R.id.favImage);
String tag = button.getTag().toString();
if (tag.equalsIgnoreCase("bookmark_border")) {
sharedPreference.addFavorite(activity,product);
Toast.makeText(activity,"Added to Favorites",Toast.LENGTH_SHORT).show();
button.setTag("bookmarked");
button.setImageResource(R.mipmap.bookmarked);
} else {
sharedPreference.removeFavorite(activity,product);
button.setTag("bookmark_border");
button.setImageResource(R.mipmap.bookmark_border);
Toast.makeText(activity,"Removed from Favorites",Toast.LENGTH_SHORT).show();
}
return true;
}
दूसरा (पसंदीदा उत्पाद प्राप्त करें और इसे "पसंदीदा" टुकड़े में पास करें )
get पसंदीदा विधि के अंदर एक स्ट्रिंग पैरामीटर जोड़ें फिर प्रक्रिया के साथ अपने "पसंदीदा" टुकड़े में समाप्त करें (आपका AsyncResponse) अपनी पसंदीदा उत्पाद सूची प्राप्त करने के लिए अपने पसंदीदा उत्पाद सूची प्राप्त करने के लिए अपने एडाप्टर को सेट करें:
Context mContext;
`mContext = getContext();`
@Override
public void processFinish(String s) {
productList = sharedPreference.getFavorites(s, mContext);
BindDictionary<Product> dict = new BindDictionary<Product>();
dict.addStringField(R.id.tvName, new StringExtractor<Product>() {
@Override
public String getStringValue(Product product, int position) {
return product.name;
}
});
dict.addStringField(R.id.tvDescription, new StringExtractor<Product>() {
@Override
public String getStringValue(Product product, int position) {
return product.description;
}
});
dict.addStringField(R.id.tvQty, new StringExtractor<Product>() {
@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);
}