模型类中 Parcelable 接口使用

 1 package com.exmyth.ui.model;
 2
 3 import java.util.ArrayList;
 4 import java.util.List;
 5
 6 public class ProductItem{
 7     //-------------------------以下字段在扫描中需要额外用到-------------------------
 8     protected String productId = "";    //产品id,扫描标签时候会返回该字段
 9     protected String brandName = "";
10     //-------------------------以上字段在扫描中需要额外用到-------------------------
11
12     protected String productName = "";
13     protected String standard = "";
14     protected String featureDesc = "";
15     protected String[] productUrls;
16     protected List<Entry> params = new ArrayList<Entry>();
17
18     public ProductItem() {
19         super();
20     }
21
22     public String getProductId() {
23         return productId;
24     }
25     public void setProductId(String productId) {
26         this.productId = productId;
27     }
28     public String getBrandName() {
29         return brandName;
30     }
31     public void setBrandName(String brandName) {
32         this.brandName = brandName;
33     }
34
35
36
37     public String getProductName() {
38         return productName;
39     }
40
41     public void setProductName(String productName) {
42         this.productName = productName;
43     }
44
45     public String getStandard() {
46         return standard;
47     }
48
49     public void setStandard(String standard) {
50         this.standard = standard;
51     }
52
53     public String getFeatureDesc() {
54         return featureDesc;
55     }
56
57     public void setFeatureDesc(String featureDesc) {
58         this.featureDesc = featureDesc;
59     }
60
61     public String[] getProductUrls() {
62         return productUrls;
63     }
64
65     public void setProductUrls(String[] productUrls) {
66         this.productUrls = productUrls;
67     }
68
69     public List<Entry> getParams() {
70         return params;
71     }
72
73     public void setParams(List<Entry> params) {
74         this.params = params;
75     }
76 }
  1 package com.exmyth.ui.model;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 import android.os.Parcel;
  7 import android.os.Parcelable;
  8
  9 public class GoodsItem extends ProductItem implements Parcelable{
 10     private String bindId;
 11     private String produceDate = "";
 12
 13     public GoodsItem() {
 14         super();
 15     }
 16
 17     public String getBindId() {
 18         return bindId;
 19     }
 20
 21     public void setBindId(String bindId) {
 22         this.bindId = bindId;
 23     }
 24
 25     public String getProduceDate() {
 26         return produceDate;
 27     }
 28
 29     public void setProduceDate(String produceDate) {
 30         this.produceDate = produceDate;
 31     }
 32
 33     @Override
 34     public int describeContents() {
 35         // TODO Auto-generated method stub
 36         return 0;
 37     }
 38
 39     @Override
 40     public void writeToParcel(Parcel dest, int flags) {
 41         // TODO Auto-generated method stub
 42         dest.writeString(bindId);
 43         dest.writeString(productId);
 44         dest.writeString(standard);
 45         dest.writeString(productName);
 46         dest.writeString(featureDesc);
 47         dest.writeString(brandName);
 48         dest.writeString(produceDate);
 49
 50         if(null == productUrls){
 51             dest.writeInt(0);
 52         }else{
 53             dest.writeInt(productUrls.length);
 54             dest.writeStringArray(productUrls);
 55         }
 56         if(null == params || 0 == params.size()){
 57             dest.writeInt(0);
 58         }
 59         else{
 60             dest.writeInt(params.size());
 61 //            dest.writeList(params);
 62             dest.writeTypedList(params);
 63         }
 64     }
 65
 66     public static final Parcelable.Creator<GoodsItem> CREATOR = new Creator<GoodsItem>() {
 67
 68         @Override
 69         public GoodsItem createFromParcel(Parcel source) {
 70             GoodsItem goodsItem = new GoodsItem();
 71             goodsItem.bindId = source.readString();
 72             goodsItem.productId = source.readString();
 73             goodsItem.standard = source.readString();
 74             goodsItem.productName = source.readString();
 75             goodsItem.featureDesc = source.readString();
 76             goodsItem.brandName = source.readString();
 77             goodsItem.produceDate = source.readString();
 78
 79             int length = source.readInt();
 80             String[] productUrls = new String[length];
 81             if(length > 0){
 82                 source.readStringArray(productUrls);
 83             }
 84             goodsItem.productUrls = productUrls;
 85
 86             int size = source.readInt();
 87             List<Entry> params = new ArrayList<Entry>(size);
 88             if(size > 0){
 89 //                source.readList(params, GoodsItem.class.getClassLoader());
 90                 source.readTypedList(params, Entry.CREATOR);
 91             }
 92             goodsItem.params = params;
 93
 94             return goodsItem;
 95         }
 96
 97         @Override
 98         public GoodsItem[] newArray(int size) {
 99             // TODO Auto-generated method stub
100             return new GoodsItem[size];
101         }
102     };
103 }
  1 package com.exmyth.ui.model;
  2
  3 import android.os.Parcel;
  4 import android.os.Parcelable;
  5
  6
  7 /*
  8  featureDesc: 产品特色描述
  9  productName: 产品名称
 10  standard:产品规格
 11  type:
 12  name:参数名称
 13  value:参数值
 14  showOrder:显示顺序
 15  */
 16 public class Entry implements Parcelable{
 17
 18     public static final String PARAM_TYPE_COMBO = "1";
 19     public static final String PARAM_TYPE_TEXT = "2";
 20     public static final String PARAM_TYPE_CONTACT = "3";
 21     public static final String PARAM_TYPE_HYPERLINK = "4";
 22     private String type; // 参数类型 1-下拉 2-文本 3-联系电话 4-链接地址
 23     private String name = ""; // 参数名称
 24     private String[] value; // 参数值
 25     private String showOrder = "0"; // 显示顺序
 26 //    public ViewType viewType = ViewType.TEXT; // 控件类型
 27     private int index = 0; // 文本,电话,链接地址的类型为0;控件类型为combo的,默认第一项
 28     private boolean isShow = false;
 29
 30 //    public enum ViewType {
 31 //        COMBO("1"), TEXT("2"), CONTACT("3"), HYPERLINK("4");
 32 //
 33 //        String value;
 34 //
 35 //        private ViewType(String value) {
 36 //            this.value = value;
 37 //        }
 38 //    }
 39
 40     public Entry() {
 41         super();
 42     }
 43
 44     public Entry(String type, String name, String[] value, String showOrder) {
 45         this(type, name, value, showOrder, 0);
 46     }
 47
 48     public Entry(String type, String name, String[] value, String showOrder,
 49             int index) {
 50         super();
 51         this.type = type;
 52         this.name = name;
 53         this.value = value;
 54         this.showOrder = showOrder;
 55         this.index = index;
 56     }
 57
 58     public String getType() {
 59         return type;
 60     }
 61
 62     public void setType(String type) {
 63         this.type = type;
 64     }
 65
 66     public String getName() {
 67         return name;
 68     }
 69
 70     public void setName(String name) {
 71         this.name = name;
 72     }
 73
 74     public String[] getValue() {
 75         return value;
 76     }
 77
 78     public void setValue(String[] value) {
 79         this.value = value;
 80     }
 81
 82     public String getShowOrder() {
 83         return showOrder;
 84     }
 85
 86     public void setShowOrder(String showOrder) {
 87         this.showOrder = showOrder;
 88     }
 89
 90     public int getIndex() {
 91         return index;
 92     }
 93
 94     public void setIndex(int index) {
 95         this.index = index;
 96     }
 97
 98     public boolean isShow() {
 99         return isShow;
100     }
101
102     public void setShow(boolean isShow) {
103         this.isShow = isShow;
104     }
105
106     @Override
107     public String toString() {
108         return "Entry [type=" + type + ", name=" + name + ", value="
109                 + (null == value ? "" : value[index]) + ", index=" + index + "]";
110     }
111
112     @Override
113     public int describeContents() {
114         // TODO Auto-generated method stub
115         return 0;
116     }
117
118     @Override
119     public void writeToParcel(Parcel dest, int flags) {
120         dest.writeString(type);
121         dest.writeString(name);
122
123         if(null == value){
124             dest.writeInt(0);
125         }else{
126             dest.writeInt(value.length);
127             dest.writeStringArray(value);
128         }
129
130         dest.writeString(showOrder);
131         dest.writeInt(index);
132     }
133
134     public static final Parcelable.Creator<Entry> CREATOR = new Creator<Entry>() {
135         @Override
136         public Entry[] newArray(int size) {
137             return new Entry[size];
138         }
139
140         //将Parcel对象反序列化为UserInfo
141         @Override
142         public Entry createFromParcel(Parcel source) {
143             Entry entry = new Entry();
144             entry.type = source.readString();
145             entry.name = source.readString();
146
147
148             int length = source.readInt();
149             String[] value = new String[length];
150             if(length > 0){
151                 source.readStringArray(value);
152             }
153             entry.value = value;
154
155             entry.showOrder = source.readString();
156             entry.index = source.readInt();
157             return entry;
158         }
159     };
160 }
时间: 2024-08-07 05:46:49

模型类中 Parcelable 接口使用的相关文章

android中Parcelable接口的使用

android中Parcelable接口的使用 一.理解 Parcelable是一个接口.用来实现序列化.与此类似的还有一个接口Serializable,这是JavaSE本身支持的,而Parcelable是android特有的.二者比较: 1.Parcelable使用起来稍复杂点,而后者使用起来非常简单.下面例子中会看到. 2.Parcelable效率比Serializable高,支持Intent数据传递,也支持进程间通信(IPC). 3.Parcelable使用时要用到一个Parcel,可以简

利用runtime实现延展动态改变模型类中属性的set,get方法

昨天大概的阐述了一下关于构架控制容器的概念,但是如果要丰满这个想法还有很多问题,比如如果我想对一些controller进行管理就势必涉及到controller的加载以及缓存,而想做这些的前提就是构建一个controller表.对表中设定的字符串管理,从而管理对应的controller.传统创建表的方法有很多,最为常用的就是plist文件,但是对于iOS开发的程序员来说,如果这个plist写死,在管理的时候就会比较死板,要知道oc是一门灵活的,动态的语言.如果我们使用NSUserDefaults,

“全栈2019”Java第八十七章:类中嵌套接口的应用场景(拔高题)

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第八十七章:类中嵌套接口的应用场景(拔高题) 下一章 "全栈2019"Java第八十八章:接口中嵌套接口的应用场景 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"J

类实现Parcelable接口在Intent中传递

类实现了Parcelable接口就可以在Intent中传递   只要在类的定义中实现Parcelable接口 代码 1 package entity; 2 3 import android.os.Parcel; 4 import android.os.Parcelable; 5 6 public class Person implements Parcelable { 7 8 private int id; 9 private String name; 10 private String pas

Android中Parcelable接口用法(转自Harvey Ren)

1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR, which is an object implementing the Parcelable.Creator int

Android中Parcelable接口使用方法

1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR. which is an object implementing the Parcelable.Creator int

Android中Parcelable接口用法

from: http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR

java类中定义接口

今天看到一个java类中定义了接口,写个备忘录,记录一下 1 package com.gxf.test; 2 3 public class Test_interface { 4 public interface show{ 5 public void show(); 6 } 7 static class TestInterface implements show{ 8 9 @Override 10 public void show() { 11 System.out.println("this

android中用Intent传数据,如果用传递的是一个类,就将类实现Parcelable接口

Parcelable,内存单位,跨进程使用,或者intent传递对象的时候使用.android中用Intent传数据,如果用传递的是一个对象,就将对象实现Parcelable接口,而不是将对象序列化. /** * 预登记 出席领导回传给预登记页面 Javabean * Created by COCO on 2017/3/4. */ public class GovernmentTakeLeaderInfo implements Parcelable{//Parcelable,内存单位,跨进程使用