sql >> Databáze >  >> RDS >> Mysql

Vytvořte si oblíbený seznam se sdílenými preferencemi

Jsou zde dva problémy (na základě vašeho projektu)

Za prvé (ukládání stavu záložky Imageview )

V adaptéru vytvořte metodu, která zkontroluje, zda konkrétní produkt existuje v 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;
}

Uvnitř adaptéru zkontrolujte, zda produkt existuje ve sdílených předvolbách, a poté nastavte záložku nakreslitelný a nastavit 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");
    }

Potom uvnitř metody zpětného volání 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;
        }

Za druhé (získejte oblíbený produkt a předejte jej fragmentu „OBLÍBENÉ“ )

Uvnitř metody getFavorite přidejte parametr StringPoté do svého fragmentu „FAVORITE“ pomocí processFinish (vaše AsyncResponse) zavolejte getFavorite, abyste získali svůj seznam oblíbených produktů a poté nastavte adaptér:

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

}


  1. Symfony 3.4 Žádné třídy metadat ke zpracování Chyba

  2. Jak mohu vrátit zpět svůj poslední příkaz delete v MySQL?

  3. Jak mohu echo ID zdroje #6 z odpovědi MySql v PHP?

  4. Interval porovnávání PostgreSQL mezi časem začátku a konce s časovým razítkem