矽谷商城3--購物車資料存放區器,3--購物車

來源:互聯網
上載者:User

矽谷商城3--購物車資料存放區器,3--購物車

 

1_建立購物車類ShoppingCart  

作用:購物車類繼承Wares,記錄某個商品在購物車中的狀態,例如有多少個商品,是否選中

public class ShoppingCart extends SmartServicePagerBean.Wares implements Serializable{    /**     * 購買的數量     */    private int count = 1;    /**     * 是否勾選     */    private boolean isCheck = true;    public int getCount() {        return count;    }    public void setCount(int count) {        this.count = count;    }    public boolean isCheck() {        return isCheck;    }    public void setIsCheck(boolean isCheck) {        this.isCheck = isCheck;    }    @Override    public String toString() {        return "ShoppingCart{" +                "count=" + count +                ", isCheck=" + isCheck +                '}';    }}
2_建立資料存放區類CartProvider

作用:資料存放區類,儲存資料;儲存資料--把集合轉成String類型儲存(Gson);取資料--把String轉換成列表資料(Gson)

public class CartProvider {    public static final String JSON_CART = "json_cart";    private final Context context;    /**     * SparseArray替換HashMap,效能好於HashMap     */    private SparseArray<ShoppingCart> datas;    public CartProvider(Context context) {        this.context = context;        datas = new SparseArray<>(10);        listToSparse();    }    private void listToSparse() {        List<ShoppingCart> carts = getAllData();        if (carts != null && carts.size() > 0) {            for (int i = 0; i < carts.size(); i++) {                ShoppingCart cart = carts.get(i);                datas.put(cart.getId(), cart);            }        }    }    /**     * 得到所有資料     *     * @return     */    public List<ShoppingCart> getAllData() {        return getDataFromLocal();    }    /**     * 從本地擷取json資料,並且通過Gson解析成List列表資料     *     * @return     */    private List<ShoppingCart> getDataFromLocal() {        List<ShoppingCart> carts = new ArrayList<>();        //從本地擷取緩衝的資料        String saveJson = CacheUtils.getString(context, JSON_CART);        if (!TextUtils.isEmpty(saveJson)) {            //通過Gson把資料轉換成List列表            carts = new Gson().fromJson(saveJson, new TypeToken<List<ShoppingCart>>() {            }.getType());        }        return carts;    }    /**     * 增加資料     *     * @param cart     */    public void addData(ShoppingCart cart) {        //1.添加資料        ShoppingCart tempCart = datas.get(cart.getId());        if (tempCart != null) {            //在列表中已經存在該條資料            tempCart.setCount(tempCart.getCount()+1);        }else{            tempCart = cart;            tempCart.setCount(1);        }        datas.put(tempCart.getId(),tempCart);        //2.儲存資料        commit();    }    /**     * 儲存資料     */    private void commit() {        //1.把SparseArray轉換成List       List<ShoppingCart> carts =  parsesToList();        //2.用Gson把List轉換成String        String json = new Gson().toJson(carts);        //3.儲存資料        CacheUtils.putString(context, JSON_CART, json);    }    /**     * 從parses的資料轉換成List列表資料     * @return     */    private List<ShoppingCart> parsesToList() {        List<ShoppingCart> carts = new ArrayList<>();        if(datas != null && datas.size() >0){            for (int i=0;i<datas.size();i++){                ShoppingCart cart = datas.valueAt(i);                carts.add(cart);            }        }        return carts;    }    /**     * 刪除資料     *     * @param cart     */    public void deleteData(ShoppingCart cart) {        //1.刪除資料        datas.delete(cart.getId());        //2.儲存資料        commit();    }    /**     * 修改資料     * @param cart     */    public void updataData(ShoppingCart cart) {        //1.修改-count        datas.put(cart.getId(), cart);        //2.儲存資料        commit();    }    /**     *  把商品Wares轉換成ShoppingCart     */    public ShoppingCart conversion(SmartServicePagerBean.Wares wares) {        ShoppingCart cart = new ShoppingCart();        cart.setImgUrl(wares.getImgUrl());        cart.setDescription(wares.getDescription());        cart.setName(wares.getName());        cart.setId(wares.getId());        cart.setSale(wares.getSale());        cart.setPrice(wares.getPrice());        return cart;    }}
3.商城熱賣的適配器中點擊添加到購物車儲存類
//1.根據位置得到對應的資料final SmartServicePagerBean.Wares wares = datas.get(position);.....//設定點擊事件在這裡可以holder.btn_buy.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//把商品轉換成ShoppingCartShoppingCart cart = cartProvider.conversion(wares);cartProvider.addData(cart);Toast.makeText(context, "添加成功", Toast.LENGTH_SHORT).show();}});

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.