模型类中 Parcelable 接口使用
package com.exmyth.ui.model; import java.util.ArrayList;
import java.util.List; public class ProductItem{
//-------------------------以下字段在扫描中需要额外用到-------------------------
protected String productId = ""; //产品id,扫描标签时候会返回该字段
protected String brandName = "";
//-------------------------以上字段在扫描中需要额外用到------------------------- protected String productName = "";
protected String standard = "";
protected String featureDesc = "";
protected String[] productUrls;
protected List<Entry> params = new ArrayList<Entry>(); public ProductItem() {
super();
} public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getBrandName() {
return brandName;
}
public void setBrandName(String brandName) {
this.brandName = brandName;
} public String getProductName() {
return productName;
} public void setProductName(String productName) {
this.productName = productName;
} public String getStandard() {
return standard;
} public void setStandard(String standard) {
this.standard = standard;
} public String getFeatureDesc() {
return featureDesc;
} public void setFeatureDesc(String featureDesc) {
this.featureDesc = featureDesc;
} public String[] getProductUrls() {
return productUrls;
} public void setProductUrls(String[] productUrls) {
this.productUrls = productUrls;
} public List<Entry> getParams() {
return params;
} public void setParams(List<Entry> params) {
this.params = params;
}
}
package com.exmyth.ui.model; import java.util.ArrayList;
import java.util.List; import android.os.Parcel;
import android.os.Parcelable; public class GoodsItem extends ProductItem implements Parcelable{
private String bindId;
private String produceDate = ""; public GoodsItem() {
super();
} public String getBindId() {
return bindId;
} public void setBindId(String bindId) {
this.bindId = bindId;
} public String getProduceDate() {
return produceDate;
} public void setProduceDate(String produceDate) {
this.produceDate = produceDate;
} @Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(bindId);
dest.writeString(productId);
dest.writeString(standard);
dest.writeString(productName);
dest.writeString(featureDesc);
dest.writeString(brandName);
dest.writeString(produceDate); if(null == productUrls){
dest.writeInt(0);
}else{
dest.writeInt(productUrls.length);
dest.writeStringArray(productUrls);
}
if(null == params || 0 == params.size()){
dest.writeInt(0);
}
else{
dest.writeInt(params.size());
// dest.writeList(params);
dest.writeTypedList(params);
}
} public static final Parcelable.Creator<GoodsItem> CREATOR = new Creator<GoodsItem>() { @Override
public GoodsItem createFromParcel(Parcel source) {
GoodsItem goodsItem = new GoodsItem();
goodsItem.bindId = source.readString();
goodsItem.productId = source.readString();
goodsItem.standard = source.readString();
goodsItem.productName = source.readString();
goodsItem.featureDesc = source.readString();
goodsItem.brandName = source.readString();
goodsItem.produceDate = source.readString(); int length = source.readInt();
String[] productUrls = new String[length];
if(length > 0){
source.readStringArray(productUrls);
}
goodsItem.productUrls = productUrls; int size = source.readInt();
List<Entry> params = new ArrayList<Entry>(size);
if(size > 0){
// source.readList(params, GoodsItem.class.getClassLoader());
source.readTypedList(params, Entry.CREATOR);
}
goodsItem.params = params; return goodsItem;
} @Override
public GoodsItem[] newArray(int size) {
// TODO Auto-generated method stub
return new GoodsItem[size];
}
};
}
package com.exmyth.ui.model; import android.os.Parcel;
import android.os.Parcelable; /*
featureDesc: 产品特色描述
productName: 产品名称
standard:产品规格
type:
name:参数名称
value:参数值
showOrder:显示顺序
*/
public class Entry implements Parcelable{ public static final String PARAM_TYPE_COMBO = "1";
public static final String PARAM_TYPE_TEXT = "2";
public static final String PARAM_TYPE_CONTACT = "3";
public static final String PARAM_TYPE_HYPERLINK = "4";
private String type; // 参数类型 1-下拉 2-文本 3-联系电话 4-链接地址
private String name = ""; // 参数名称
private String[] value; // 参数值
private String showOrder = "0"; // 显示顺序
// public ViewType viewType = ViewType.TEXT; // 控件类型
private int index = 0; // 文本,电话,链接地址的类型为0;控件类型为combo的,默认第一项
private boolean isShow = false; // public enum ViewType {
// COMBO("1"), TEXT("2"), CONTACT("3"), HYPERLINK("4");
//
// String value;
//
// private ViewType(String value) {
// this.value = value;
// }
// } public Entry() {
super();
} public Entry(String type, String name, String[] value, String showOrder) {
this(type, name, value, showOrder, 0);
} public Entry(String type, String name, String[] value, String showOrder,
int index) {
super();
this.type = type;
this.name = name;
this.value = value;
this.showOrder = showOrder;
this.index = index;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String[] getValue() {
return value;
} public void setValue(String[] value) {
this.value = value;
} public String getShowOrder() {
return showOrder;
} public void setShowOrder(String showOrder) {
this.showOrder = showOrder;
} public int getIndex() {
return index;
} public void setIndex(int index) {
this.index = index;
} public boolean isShow() {
return isShow;
} public void setShow(boolean isShow) {
this.isShow = isShow;
} @Override
public String toString() {
return "Entry [type=" + type + ", name=" + name + ", value="
+ (null == value ? "" : value[index]) + ", index=" + index + "]";
} @Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(type);
dest.writeString(name); if(null == value){
dest.writeInt(0);
}else{
dest.writeInt(value.length);
dest.writeStringArray(value);
} dest.writeString(showOrder);
dest.writeInt(index);
} public static final Parcelable.Creator<Entry> CREATOR = new Creator<Entry>() {
@Override
public Entry[] newArray(int size) {
return new Entry[size];
} //将Parcel对象反序列化为UserInfo
@Override
public Entry createFromParcel(Parcel source) {
Entry entry = new Entry();
entry.type = source.readString();
entry.name = source.readString(); int length = source.readInt();
String[] value = new String[length];
if(length > 0){
source.readStringArray(value);
}
entry.value = value; entry.showOrder = source.readString();
entry.index = source.readInt();
return entry;
}
};
}
模型类中 Parcelable 接口使用的更多相关文章
- python---Django中模型类中Meta元对象了解
Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...
- “全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第八十章:外部类是否能实现本类中的接口?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Java 私有接口 【类中嵌套接口】
1.前言 接口十分常用,能规范实现类的命名 和 实现多个实现类的向上转型成统一类型 ,但是接口的修饰符只能是 public吗? 当然不是,可以是private , 难道是像这样? 显然不可以,已经报错 ...
- 类实现Parcelable接口在Intent中传递
类实现了Parcelable接口就可以在Intent中传递 只要在类的定义中实现Parcelable接口 代码 package entity; import android.os.Parcel; ...
- Android中Parcelable接口的使用
在做开发的过程中,序列化是非常常见的.比如要将对象保存本地磁盘或者在网络上传输等.实现序列化有两种方式,一种是实现Serializable接口,第二种是实现Parcelable. Serializab ...
- Android中Parcelable接口
1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...
- (转)Android中Parcelable接口用法
1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...
- Android开发中Parcelable接口的使用方法
在网上看到很多Android初入门的童鞋都在问Parcelable接口的使用方法,小编参考了相关Android教程,看到里面介绍的序列化方法主要有两种分别是实现Serializable接口和实现Par ...
随机推荐
- HTML5 类型数组TypeArray(一)
1.起源 TypedArray是一种通用的固定长度缓冲区类型,允许读取缓冲区中的二进制数据. 其在WEBGL规范中被引入用于解决Javascript处理二进制数据的问题. TypedArray已经被大 ...
- (转)ThinkPHP使用心得分享-分页类Page的用法
转之--http://www.jb51.net/article/50138.htm ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.clas ...
- class-loader.
the jdk hierarchical relationship of class-loader ----Module Class Loading and Bootstrapping---- boo ...
- scn转换为十进制
- 解决 iOS View Controller Push/Pop 时的黑影
那么如何解决这个问题呢? 实际上很简单,如果这个 ViewController 是在 TabBarViewController 的 NavigationController 上 Push/Pop 的, ...
- 在浏览器运行 java applet时遇到的一些问题及其解决方法
运行 java applet时提示:您的安全设置已阻止本地应用程序运行,如何解决?如下图所示 这时候通过设置java的安全级别就可以了. 控制面板->程序->Java->安全 将安全 ...
- this、new、apply和call详解
讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解 ...
- 通过Unity依赖注入
前言 Unity容器的思想起始于我在为Web Client Sofitware Factory项目工作的时候,微软的patterns&practices团队已经使用依赖注入的概念好几年了在那时 ...
- JavaScript那些事儿(01): 对象
一. 对象是什么 是单身童鞋们正在查找的“对象”吗?是的,他/她就是活生生的对象. Javascript是一种基于对象的语言, 你遇到的所有东西几乎都是对象. 但它又不同于基于类的语言.那么“类”又是 ...
- PHP后台传值
前台数据往后台传值,往往是新手最头痛的,最近在学习thinkPHP的时候,也遇到了这种问题,总结一下,往不足之处请大家指教. 一.前台界面代码,往后台传值有两种方式,一种是get,另一种是post,新 ...