的带有集合带有bigdecimal的处理
定义一个商品信息类,其中包含bigdecimal、string
1.实现parcelable
2.重写describeContents 和writeToParcel的方法
describeContents 的方法默认处理即可为0,
writeToParcel是序列化处理,将数据写入到Parcel对象中,通过Parcel 对象将所有属性进行处理,若是bigdecimal则将写入string字符串
3.实例化静态内部对象CREATOR,其中createFromParcel是反序列化的处理,将writeToParcel方法序列化的数据进行反序列化。
注意:
writeToParcel中和createFromParcel中即调用的protected GoodInfoModel(Parcel in) 中的处理参数的顺序必须相同
上面这些就是序列化的基本流程,对于Android studio 中类实现Parcelable后重写方法,则自动会生成上述处理。
以下重点标出了bigdecimal的处理
public class GoodInfoModel implements Parcelable {
private BigDecimal total;
private BigDecimal weight;
private String goodsno;
private String barcode;
private BigDecimal qty;
protected GoodInfoModel(Parcel in) {
total = new BigDecimal(in.readString());
weight = new BigDecimal(in.readString());
goodsno = in.readString();
barcode = in.readString();
qty = new BigDecimal(in.readString());
}
public static final Creator CREATOR = new Creator() {
@Override
public GoodInfoModel createFromParcel(Parcel in) {
return new GoodInfoModel(in);
}
@Override
public GoodInfoModel[] newArray(int size) {
return new GoodInfoModel[size];
}
};
public BigDecimal getTotal() {
return total;
}
public void setTotal(BigDecimal total) {
this.total = total;
}
public BigDecimal getWeight() {
return weight;
}
public void setWeight(BigDecimal weight) {
this.weight = weight;
}
public String getGoodsno() {
return goodsno;
}
public void setGoodsno(String goodsno) {
this.goodsno = goodsno;
}
public String getBarcode() {
return barcode;
}
public void setBarcode(String barcode) {
this.barcode = barcode;
}
public BigDecimal getQty() {
return qty;
}
public void setQty(BigDecimal qty) {
this.qty = qty;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(getUnNullString(total + "", "0"));
dest.writeString(getUnNullString(weight + "", "0"));
dest.writeString(goodsno);
dest.writeString(barcode);
dest.writeString(getUnNullString(qty + "", "0"));
}
// 为空判断
private String getUnNullString(String s, String defaultData) {
return (s == null || TextUtils.isEmpty(s) || "null".equals(s)) ? defaultData
: s;
}
}
订单类:
public class OrderInfo implements Parcelable {
private List goodInfoModels;
private BigDecimal total;
private int count;
private String flow_no;
public OrderInfo(Parcel in) {
goodInfoModels = in.createTypedArrayList(GoodInfoModel.CREATOR);
total = new BigDecimal(in.readString());
count = in.readInt();
flow_no = in.readString();
}
public static final Creator CREATOR = new Creator() {
@Override
public OrderInfo createFromParcel(Parcel in) {
return new OrderInfo(in);
}
@Override
public OrderInfo[] newArray(int size) {
return new OrderInfo[size];
}
};
public OrderInfo() {
}
// 为空判断
private String getUnNullString(String s, String defaultData) {
return (s == null || TextUtils.isEmpty(s) || "null".equals(s)) ? defaultData
: s;
}
public List getGoodInfoModels() {
return goodInfoModels;
}
public void setGoodInfoModels(List goodInfoModels) {
this.goodInfoModels = goodInfoModels;
}
public BigDecimal getTotal() {
return total;
}
public String getFlow_no() {
return flow_no;
}
public void setFlow_no(String flow_no) {
this.flow_no = flow_no;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeTypedList(goodInfoModels);
dest.writeString(getUnNullString(total + "", ""));
dest.writeInt(count);
dest.writeString(flow_no);
}
本文地址:https://blog.csdn.net/jiuweitianhu_12345/article/details/112240365
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!