模型类中 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 ...
随机推荐
- 使用OpenFileDialog实现图片上传
demo效果图:
- 【转载】ASP.NET线程安全与静态变量的生命周期浅谈
ASP.NET线程安全所涉及的是什么呢?让我们先来看看静态变量的生命周期问题,下面是我理解的静态变量的生命周期: void Application_Start开始 void Application_E ...
- [转]C++基本功和 Design Pattern系列 ctor & dtor
今天Aear讲的是class.ctor 也就是constructor, 和 class.dtor, destructor. 相信大家都知道constructor 和 destructor是做什么用的 ...
- iOS开发,新手入门指导
在做了近两年wp,安卓开发之后,某一天突然决定投身iOS的开发之中. 因为一直用的mac,做wp开发的时候都用双系统,vs开久了,就会比较烫,这点让人不爽.后来更多地做安卓,直接mac下开发,很舒适的 ...
- Linux CentOS6.4下Mysql数据库的安装与配置
一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...
- js 点名
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Delphi-LowerCase 函数
函数名称 LowerCase 所在单元 System.SysUtils 函数原型 function LowerCase(const S: string): string; 函数功能 将字符串中所有的大 ...
- angularJS快速入门
1.引入脚本文件 <link rel="stylesheet" href="http://lib.sinaapp.com/js/bootstrap/v3.0.0/c ...
- Codeforces 301_div.2_Ice Cave(BFS走冰块)
Ice Cave Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Descripti ...
- MVC中的模型注解
authour: chenboyi updatetime: 2015-04-26 21:28:42 friendly link: 目录: 1,思维导图 2,内容解析 3,CodeSimple 1, ...