Mysql
 sql >> Database >  >> RDS >> Mysql

Crea una visualizzazione elenco dei preferiti con le preferenze condivise

Ci sono due problemi qui (basati sul tuo progetto)

Prima (salvataggio dello stato del segnalibro Imageview )

Nell'adattatore crea un metodo che controlla se un particolare prodotto esiste in 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;
}

All'interno dell'adattatore controlla se un prodotto esiste nelle preferenze condivise, quindi imposta segnato ai preferiti drawable e imposta un tag

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");
    }

Quindi all'interno del metodo di richiamata 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;
        }

Secondo (prendi il prodotto preferito e passalo al frammento "FAVORITE" )

All'interno del metodo getFavorite aggiungi un parametro String Quindi nel tuo frammento "FAVORITE" con processFinish(your AsyncResponse) chiama il tuo getFavorite per ottenere il tuo elenco di prodotti preferiti, quindi imposta il tuo adattatore:

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);

}