Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Utwórz ulubiony widok listy ze wspólnymi preferencjami

Występują tutaj dwa problemy (w oparciu o Twój projekt)

Pierwszy (zapisywanie stanu zakładki Widok obrazu )

W adapterze utwórz metodę, która sprawdza, czy dany produkt istnieje w 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;
}

Wewnątrz adaptera sprawdź, czy produkt istnieje we wspólnych preferencjach, a następnie ustaw zakładkę rysować i ustawić znacznik

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

Następnie wewnątrz metody wywołania zwrotnego 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;
        }

Drugi (zdobądź ulubiony produkt i przekaż go do fragmentu „FAVORITE” )

Wewnątrz metody getFavorite dodaj parametr String Następnie we fragmencie „FAVORITE” za pomocą processFinish (your AsyncResponse) wywołaj metodę getFavorite, aby uzyskać listę ulubionych produktów, a następnie ustaw adapter :

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nie mogę połączyć się z mysql za pomocą php

  2. Odzyskaj miejsce na dysku po upuszczeniu bazy danych w mysql

  3. Alternatywy MySQL Proxy do dzielenia baz danych

  4. GRUPA MySQL WEDŁUG... MIEJĄCYCH różne wartości w tym samym polu

  5. Podzapytanie ORDER BY dla konwersji GROUP BY na JOIN