Có hai vấn đề ở đây (dựa trên dự án của bạn)
Đầu tiên ( lưu trạng thái của Bookmark Imageview )
Trong bộ điều hợp, hãy tạo một phương thức để kiểm tra xem một sản phẩm cụ thể có tồn tại trong SharedPreferences hay không
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;
}
Bên trong bộ điều hợp kiểm tra xem một sản phẩm có tồn tại trong các tùy chọn được chia sẻ hay không, sau đó đặt được đánh dấu trang có thể vẽ và đặt thẻ
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");
}
Sau đó, bên trong phương thức gọi lại 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;
}
Thứ hai ( nhận sản phẩm yêu thích và chuyển sản phẩm đó vào Phân đoạn "YÊU THÍCH" )
Bên trong phương thức getFavorite, hãy thêm một tham số Chuỗi Sau đó, trong Phân đoạn "YÊU THÍCH" của bạn với processFinish (AsyncResponse của bạn) gọi getFavorite của bạn để nhận danh sách sản phẩm Yêu thích của bạn, sau đó đặt bộ điều hợp của bạn:
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);
}