sql >> Database >  >> RDS >> Mysql

Maak een favoriete lijstweergave met gedeelde voorkeuren

Er zijn hier twee problemen (gebaseerd op uw project)

Eerste (status van bladwijzerafbeeldingsweergave opslaan )

Maak in adapter een methode die controleert of een bepaald product bestaat 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;
}

Binnenste adapter controleer of een product bestaat in gedeelde voorkeuren en stel vervolgens bladwijzer in tekenbaar en stel een tag in

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

Dan binnen favOnClick callback-methode

    @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;
        }

Tweede (haal favoriete product en geef het door aan "FAVORIET" Fragment )

Voeg binnen de getFavorite-methode een String-parameter toe. Roep vervolgens in uw "FAVORITE" Fragment met processFinish (uw AsyncResponse) uw getFavorite aan om uw lijst met favoriete producten te krijgen en stel vervolgens uw adapter in:

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. Kruispunt instellen in MySQL:een schone manier

  2. Hoe kan ik twee MySQL-tabellen samenvoegen?

  3. Hoe kan ik voorkomen dat een automatisch oplopende ID wordt bijgewerkt bij het bijwerken van een dubbele sleutel?

  4. Waarom zorgt toegevoegde RAND() ervoor dat MySQL overbelast raakt?