public class Menu implements Parcelable {
private int id;
private String name;
public Menu() {
}
public Menu(Parcel source) {
id = source.readInt();
name = source.readString();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@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.writeInt(id);
dest.writeString(name);
}
public static final Parcelable.Creator<Menu> CREATOR = new Creator<Menu>() {
@Override
public Menu createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new Menu(source);
}
@Override
public Menu[] newArray(int size) {
// TODO Auto-generated method stub
return new Menu[size];
}
};
}
public class Shop implements Parcelable {
private int id;
private String name;
private String tel;
private ArrayList<Menu> menu_AList;
public Shop() {
}
public Shop(Parcel source) {
id = source.readInt();
name = source.readString();
tel = source.readString();
menu_AList = new ArrayList<Menu>();
source.readTypedList(menu_AList, Menu.CREATOR);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public ArrayList<Menu> getMenuAList() {
return menu_AList;
}
public void setMenuAList(ArrayList<Menu> menu_AList) {
this.menu_AList = menu_AList;
}
@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.writeInt(id);
dest.writeString(name);
dest.writeString(tel);
dest.writeTypedList(menu_AList);
}
public static final Parcelable.Creator<Shop> CREATOR = new Creator<Shop>() {
@Override
public Shop createFromParcel(Parcel source) {
// TODO Auto-generated method stub
return new Shop(source);
}
@Override
public Shop[] newArray(int size) {
// TODO Auto-generated method stub
return new Shop[size];
}
};
}
最关键的代码是这段: menu_AList = new ArrayList<Menu>();
source.readTypedList(menu_AList, Menu.CREATOR);
Shop类调用嵌套的Menu类的CREATOR来读取数据,进而生成ArrayList<Menu>。
另外,如果在Menu类中再嵌套其他类,这个时候就会发现跳转Activity传递数据时速度就下降了很多。
所以,使用Parcelable传递数据时数据结构应该尽量简单,避免多重嵌套的发生。
分享到:
相关推荐
Android多进程通讯AIDL传递Parcelable对象
Android通过Parcelable和Serializable实现各种类型嵌套序列化
实现Parcelable接口跨进程传递复杂数据
android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看>http://blog.csdn.net/js931178805/article/details/8268144
Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法。 被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcelable Java中...
Android AIDL传输对象代码 Parcelable 在AIDL client的Activity中点击传输对象按钮查看日志,就会看到对象里面的内容
Android序列化——Serializable与Parcelable
在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...
activity间传递对象,实现Parcelable 和Serializable传递对象
NULL 博文链接:https://2528.iteye.com/blog/1849692
android messager parcelable数据对象传递demo,关于跨进程通信遇到一些问题的解决,不同应用通信,保持传递的parcelable对象的包名一致即可,其他保持不变。
欢迎下载实现Parcelable接口的方式借助Intent实现Android工程中Activity之间Java对象的传递.zip !
在Android开发过程中,经常要在Activity之间传递参数,使用Android系统提供的方法可以传递基本数据类型的变量,但有时候我们经常要传递一些复杂的数据类型或自定义的类,这种情况的参数无法直接传递,我们可以通过...
android序列化(Parcelable)
通过客户端和服务端,演示如何通过aidl实现进程间通信,及如何传递Parcelable数据
AndroidStudio自动生成parcelable的插件
Activity间要传递数据,很多时候简单的int和string满足不了需求,我们在面向对象中已经习惯了类和对象, 那么下面就说一下如何传递类对象。 Android中有两种办法来完成这件事。一个是Java的序列化(Serializable)...
但这些对象在Activity之间不能直接传递,用什么方法去解决? 方法一:将一个公共类作为对象传输中介,但安全性差,可能由于多个类的调用导致传输出错。 将变量写成公共静态型,在A Activiy设置Center.a=new Obiect...
进程间传递对象数据时,要用到Parcelable及Service,该例子实现如何在进程间传递对象数据
Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key, Object);其中前面一种方法中的Object要实现Serializable接口,后面一种方法中...