频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
adnroid中的序列化之自定义类内部变量
2018-04-08 09:47:55         来源:qinxue24的博客  
收藏   我要投稿

对于基础的String,int等java支持的Parcelable类,简单写一下写入和读取就可以了,对于含有成员是自己写的Parcelable类有些不同,差别也不大。

代码如下,定义个Parcelable类

package com.xue.qin.demo.myparcelableclass;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by xue.qin on 2017/6/5.
 */

public class MyObject implements Parcelable {
    private int n;
    private String name;

    public int getN() {
        return n;
    }

    public void setN(int n) {
        this.n = n;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUseless() {
        return useless;
    }

    public void setUseless(String useless) {
        this.useless = useless;
    }

    private String useless;

    public MyObject(){
        n=0;
        name="default";
        useless="default";
    }




    public MyObject(int n, String name, String useless) {
        this.n = n;
        this.name = name;
        this.useless = useless;
    }

    public MyObject(Parcel source) {
        readFromParcel(source);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(n);
        dest.writeString(name);
        dest.writeString(useless);
    }

    public void readFromParcel(Parcel source) {
        this.n = source.readInt();
        this.name = source.readString();
        this.useless = source.readString();
    }

    public static final Parcelable.Creator CREATOR = new Creator() {
        @Override
        public MyObject createFromParcel(Parcel source) {
            MyObject myObject2 = new MyObject(source);
            return myObject2;
        }

        @Override
        public MyObject[] newArray(int size) {
            return new MyObject[size];
        }
    };

    @Override
    public String toString() {
        return "( n:" + n + " name:" + name + " useless:" + useless + " 地址:" + super.toString() + " )";
    }
}

另一Parcelable类包含上一个MyObject的成员

package com.xue.qin.demo.myparcelableclass;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by qinxue on 2018/4/4.
 */

public class OuterClassObj implements Parcelable {
    private String content;
    private MyObject myObject;

    private OuterClassObj(Parcel source) {
        content = source.readString();
        myObject = source.readParcelable(MyObject.class.getClassLoader());
    }

    public OuterClassObj(String content, MyObject myObject) {
        this.content = content;
        this.myObject = myObject;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(content);
        parcel.writeParcelable(myObject, i);
    }

    public static final Parcelable.Creator CREATOR = new Creator() {
        @Override
        public OuterClassObj createFromParcel(Parcel source) {
            OuterClassObj outerObj = new OuterClassObj(source);
            return outerObj;
        }

        @Override
        public OuterClassObj[] newArray(int size) {
            return new OuterClassObj[size];
        }
    };

    @Override
    public String toString() {
        return " content: "+content + " myObject = "+myObject;
    }
}

大概就是这样啦。

点击复制链接 与好友分享!回本站首页
上一篇:android NDK 教程 -- 使用官方提供的姿势可视化界面Build
下一篇:android NDK开发学习教程
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站