最近在做仿淘宝购物的APP(目前已经完成,有时间就把这个项目写出来),在做购物车这一块的时候,我是把数据先转化为json数据,然后通过sharedpreferences来把数据保存到本地内存中(至少用户没有登录的情况下可以这么做),我们知道sharedpreferences是通过键值对来存储数据的(不清楚的同学请移步Android源代码分析之sharedpreferences),key值可以随便给定一个常量,取的时候也是需要通过这个key来取的,以下即是存储的代码:
public void commit(){
List<ShoppingCart> carts = sparseToList();//ShoppingCart是对商品属性的一个封装类,sparseToList()下面会给出解释
PreferencesUtils.putString(mContext,CART_JSON,JSONUtil.toJSON(carts));//JSONUtil是对json数据转换功能进行封装的一个类
}
在PreferencesUtils类里面封装了对sharedpreferences的调用:
public static boolean putString(Context context, String key, String value) {
SharedPreferences settings = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value);
return editor.commit();
}
在最开始做的时候对于carts中商品的排序是根据商品的id来的,以下是spareseToList函数的代码:
private List<ShoppingCart> sparseToList(){
int size = datas.size();//datas是存储商品的稀疏数组
List<ShoppingCart>