将Bean类保存在本地,已JSON的形式提交,便于其他页面读取。常用于购物车

来源:互联网 发布:java与c 的区别 编辑:程序博客网 时间:2024/06/07 01:06
package com.vily.cartshop.utils;import android.content.Context;import android.util.SparseArray;import com.alibaba.fastjson.JSON;import com.vily.cartshop.bean.ListInfo;import com.vily.cartshop.bean.ShoppingCart;import java.util.ArrayList;import java.util.List;public class CartProvider {    public static final String CART_JSON="cart_json";    private SparseArray<ShoppingCart> datas =null;    private  Context mContext;    /**     * 构造方法,将List数据保存到 集合 SparseArray中     * @param context     */    public CartProvider(Context context){        mContext = context;       datas = new SparseArray<>(10);        listToSparse();    }    /**     *     * @param cart  存放 Bean类的 ShoppingCart数据     */    public void put(ShoppingCart cart){       ShoppingCart temp =  datas.get(cart.id);        if(temp !=null){            temp.count=temp.count+1;        }        else{            temp = cart;            temp.count=1;        }        datas.put(cart.id,temp);        commit();    }    /**     *     * @param listInfo   存放Bean类的  ListInfo  数据     */    public void put(ListInfo listInfo){        ShoppingCart cart = convertData(listInfo);        put(cart);    }    /**     *     * @param cart  更新数据     */    public void update(ShoppingCart cart){        datas.put(cart.id,cart);        commit();    }    /**     *     * @param cart   删除某一条目的数据     */    public void delete(ShoppingCart cart){        datas.delete(cart.id);        commit();    }    /**     *     * @return  获取 本地中所有数据  并且已List  返回数据     */    public List<ShoppingCart> getAll(){        return  getDataFromLocal();    }    /**     *  提交数据  将List 数据 转换成 JSON  保存在本地     */    public void commit(){        List<ShoppingCart> carts = sparseToList();        PreferencesUtils.putString(mContext,CART_JSON,JSON.toJSONString(carts));    }    /**     *     * @return   将SparseArray集合 转换成 List     */    private List<ShoppingCart> sparseToList(){        int size = datas.size();        List<ShoppingCart> list = new ArrayList<>(size);        for (int i=0;i<size;i++){            list.add(datas.valueAt(i));        }        return list;    }    /**     * 初始化的时候 先把本地的文件放进去     */    private void listToSparse(){        List<ShoppingCart> carts =  getDataFromLocal();        if(carts!=null && carts.size()>0){            for (ShoppingCart cart:carts) {                datas.put(cart.id,cart);            }        }    }    /**     *     * @return 从本地获取文件     */    public  List<ShoppingCart> getDataFromLocal(){        String json = PreferencesUtils.getString(mContext,CART_JSON);        List<ShoppingCart> carts =null;        if(json !=null ){            carts = JSON.parseArray(json, ShoppingCart.class);        }        return  carts;    }    /**     *     * @param listInfo     * @return  将 Bean 类ListInfo 中的数据 转换成 ShoppingCart的 Bean类     */    public ShoppingCart convertData(ListInfo listInfo){        ShoppingCart cart = new ShoppingCart();        cart.id=listInfo.id;        cart.imgUrl=listInfo.imgUrl;        cart.name=listInfo.name;        cart.price=listInfo.price;        return cart;    }}

阅读全文
0 0
原创粉丝点击