編輯:關於android開發

作用:購物車類繼承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 +
'}';
}
}
作用:數據存儲類,存儲數據;存儲數據--把集合轉成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;
}
}
//1.根據位置得到對應的數據
final SmartServicePagerBean.Wares wares = datas.get(position);
.....
//設置點擊事件在這裡可以
holder.btn_buy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//把商品轉換成ShoppingCart
ShoppingCart cart = cartProvider.conversion(wares);
cartProvider.addData(cart);
Toast.makeText(context, "添加成功", Toast.LENGTH_SHORT).show();
}
});
Bottom Sheet
Bottom Sheet 上周android推出了Android Support Library 23.2版本,提供了一些新的API支持和對現有庫增加新特性。 先來看
通過jni調用OpenCv跟直接調用android版openCv對圖片進行簡單的變換
通過jni調用OpenCv跟直接調用android版openCv對圖片進行簡單的變換 看看效果圖,如果運行時提示需要安裝xxxx.mamager,那麼就去現在Opencv
Android上在兩個Activity之間傳遞Bitmap對象
Android上在兩個Activity之間傳遞Bitmap對象 Android上在兩個Activity之間傳遞Bitmap對象 因為我做Android應用的時間不長,
編譯器開發系列--Ocelot語言5.表達式的有效性檢查,--ocelot有效性
編譯器開發系列--Ocelot語言5.表達式的有效性檢查,--ocelot有效性本篇將對“1=3”“&5”這樣無法求值的不正確的表達式進行檢查。 將檢查如下這些問