Intent传递简单对象与集合
2024-09-08 03:51:58
我们在Intent传递传递对象。能够有三种方式,实现Serializable接口、实现Parcelable接口,使用json格式序列化与反序列化。
在此我们使用第二方式,现实Parcelable接口,实现Parcelable须要下面操作。
1.writeToParcel 方法:该方法将类的数据写入外部提供的Parcel中。
2.describeContents 方法:返回内容描写叙述信息的资源ID。
3.静态的Parcelable.Creator接口,本接口有下面方法双方法:
3.1 createFormParcel(Parcel in):实现从parcle实例中创建出类的实例的功能。
3.2 newArray(int size): 创建一个类型为T。长度为size的数组。
样例1:User 对象创建
public class User implements Parcelable{ private Integer userId;
private String userName;
@Override
public int describeContents() {
return 0;
} /**
* 注意:序列化与反序列化顺序必需要一样
* @param parcel
*/
public User(Parcel source){
this.userId =source.readInt();
this.userName = source.readString();
} public User(Integer userId, String userName) {
super();
this.userId = userId;
this.userName = userName;
} /**
* 序列化
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.userId);
dest.writeString(this.userName);
} public static Parcelable.Creator<User> CREATOR=new Parcelable.Creator<User>() { /**
* 反序列化
*/
@Override
public User createFromParcel(Parcel source) {
return new User(source);
} @Override
public User[] newArray(int size) {
return new User[size];
} };
样例2:UserMode
ublic class UserMode implements Parcelable{ private List<User> users=new ArrayList<User>(); public UserMode(){}; @Override
public int describeContents() {
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(users);
} public UserMode(Parcel source){
//须要创建一个集合,进行反序列化
users = new ArrayList<User>();
source.readList(users, getClass().getClassLoader());
} public static Parcelable.Creator<UserMode> CREATOR =new Creator<UserMode>() { @Override
public UserMode[] newArray(int size) {
return new UserMode[size];
} @Override
public UserMode createFromParcel(Parcel source) {
return new UserMode(source);
}
};
}
最新文章
- Angular从0到1:function(上)
- KMP模式匹配_2
- android122 zhihuibeijing 主页面使用fragment搭建
- Linux Apache SVN
- C语言的预处理命令
- Android开发环境的搭建之(一)Java开发环境的安装
- 使用wfastcgi在IIS上部署Python Flask应用
- Vue之八 HTML5 History模式
- Redis可视化工具 Redis Desktop Manager
- JAVA—枚举(Enum)学习总结
- java数组的for遍历
- Python urllib.quote
- 微信小程序中的 web-view 组件
- windows下对python的pip更新到最新版本
- Linux下tomcat启动
- redis——持久化方式RDB与AOF分析
- discuz对PHP7不支持mysql的兼容性处理
- mysql 命令连接
- 因技术垃圾直接上手groovy的工作感悟
- Mail.Ru Cup 2018 Round 2 Problem C Lucky Days