Android在各个Activity之间传递List<MealItem>时,需要将MealItem序列化;

而在Android中序列化有两种方式:实现Serializable接口或者实现Parcelable接口,两者可以实现同样的目的,后者效率高但实现不如Serializable方便;

在Android中推荐后者

1. 实现Serializable接口

Serializable是JavaSE中自带的接口,实现起来很简单,只需要在实例类中implementsSerializable即可

<span style="font-size:14px;">public class MealItem implements Serializable{private String name;//菜品名称private String price;//菜品现价private int count;//预订数量public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}}</span>


2. 实现 Parcelable接口

Parcelable是Android中特有的接口,其效率高,因此在Android中被推荐

实现此接口需要实现两个方法以及一个CREATOR:

public int describeContents();

public void writeToParcel(Parcel dest, int flags);

public static final Parcelable.Creator<MealItem> CREATOR = new Creator<MealItem>() {
@Override
public MealItem createFromParcel(Parcel source);
@Override
public MealItem[] newArray(int size);
};

writeToParcel的顺序应该与CREATOR的createFromParcel保持一致

例子如下:可对比实现Serializable时的代码;

<span style="font-size:18px;">public class MealItem implements Parcelable {private String name;//菜品名称private String price;//菜品现价private int count;//预订数量public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(name);dest.writeString(price);dest.writeInt(count);}public static final Parcelable.Creator<MealItem> CREATOR = new Creator<MealItem>() {@Overridepublic MealItem createFromParcel(Parcel source) {MealItem mealItem = new MealItem();mealItem.setName(source.readString());mealItem.setPrice(source.readString());mealItem.setCount(source.readInt());return null;}@Overridepublic MealItem[] newArray(int size) {return new MealItem[size];}};}</span>



更多相关文章

  1. SeekBar自定义样式最优实现
  2. LinearLayout中实现水平方向上的两个textview一个居左,一个居右的
  3. Android顶部工具栏和底部工具栏的简单实现代码
  4. Android(安卓)如何使用GPU硬件加速
  5. Android实现书籍翻页效果--扩展版
  6. Android实现书籍翻页效果--扩展版(转)
  7. android 实现静默安装、卸载(图)
  8. Android(安卓)如何使用GPU硬件加速
  9. [Unity3D]Android实现手机震动功能

随机推荐

  1. android启动--深入理解zygote
  2. android 关于Dialog 圆角的问题
  3. Android API 人脸检测(Face Detect)
  4. Android 开发中使用SQLite 数据库
  5. [原]Android Native Debug
  6. linux下操作android模拟器命令
  7. android编程中的琐碎知识点汇总(2)
  8. 为Android添加服务
  9. Android(安卓)如何把AsyncTask改用非内部
  10. 如何在mac本上安装android sdk