博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity之间通过Intent传递复杂Customer Object的两种方式
阅读量:6857 次
发布时间:2019-06-26

本文共 8388 字,大约阅读时间需要 27 分钟。

hot3.png

1.Serializable

特点,方便简单

public class CommonListResult implements Serializable{

    private static final long serialVersionUID = 1L;
    private String aString;
    private String bString;
    private String cString;
    private ArrayList<String> dStrings;
    private ArrayList<CommonListResultStep> eArrayList;
    public String getaString() {
        return aString;
    }
    public void setaString(String aString) {
        this.aString = aString;
    }
    public String getbString() {
        return bString;
    }
    public void setbString(String bString) {
        this.bString = bString;
    }
    public String getcString() {
        return cString;
    }
    public void setcString(String cString) {
        this.cString = cString;
    }
    public ArrayList<String> getdStrings() {
        return dStrings;
    }
    public void setdStrings(ArrayList<String> dStrings) {
        this.dStrings = dStrings;
    }
    public ArrayList<CommonListResultStep> geteArrayList() {
        return eArrayList;
    }
    public void seteArrayList(ArrayList<CommonListResultStep> eArrayList) {
        this.eArrayList = eArrayList;
    }

public class CommonListResultStep implements Serializable {

    private static final long serialVersionUID = 2L;
    private String step1;
    private String step2;
    public String getStep1() {
        return step1;
    }
    public void setStep1(String step1) {
        this.step1 = step1;
    }
    public String getStep2() {
        return step2;
    }
    public void setStep2(String step2) {
        this.step2 = step2;
    }
}

MainActivity----->SerializableActivity

private void sendSeriabletoActivity() {

        CommonListResult commonListResult = new CommonListResult();
        commonListResult.setaString("a");
        commonListResult.setbString("b");
        commonListResult.setcString("c");
        ArrayList<String> cArrayList = new ArrayList<String>();
        cArrayList.add("d1");
        cArrayList.add("d2");
        commonListResult.setdStrings(cArrayList);
        ArrayList<CommonListResultStep> steps = new ArrayList<CommonListResultStep>();
        CommonListResultStep commonListResultStep = new CommonListResultStep();
        commonListResultStep.setStep1("step1.1");
        commonListResultStep.setStep2("step1.2");
        CommonListResultStep commonListResultStep2 = new CommonListResultStep();
        commonListResultStep2.setStep1("step2.1");
        commonListResultStep2.setStep2("step2.2");
        steps.add(commonListResultStep);
        steps.add(commonListResultStep2);
        commonListResult.seteArrayList(steps);
        Intent intent = new Intent(MainActivity.this, SerializableActivity.class);
        intent.putExtra("commonlist_result", commonListResult);
        startActivity(intent);
    }

public class SerializableActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_serializable);
        Intent intent = getIntent();
        CommonListResult result = (CommonListResult) intent
                .getSerializableExtra("commonlist_result");
        if (result != null) {
            ArrayList<String> strings = result.getdStrings();
            Log.e("SerializableActivity", "strings :" + strings);
            ArrayList<CommonListResultStep> steps = result.geteArrayList();
            Log.e("SerializableActivity", "step String :" + steps.get(0).getStep1()
                    + steps.get(0).getStep2() + "\nsetp2 :" + steps.get(1).getStep1()
                    + steps.get(1).getStep2());
        }
    }

2.Parcelable

特点,稍微复杂,但是内存效率高

public class CommonListResultParcelble implements Parcelable {

    private String aString;
    private String bString;
    private String cString;
    private ArrayList<String> dStrings;
    private ArrayList<CommonListResultStepParcelble> eArrayList;
    public CommonListResultParcelble () {
        dStrings = new ArrayList<String>();
        eArrayList = new ArrayList<CommonListResultStepParcelble>();
    }
    
    public CommonListResultParcelble(Parcel in) {
        this();
        readParcel(in);
    }
    public String getaString() {
        return aString;
    }
    public void setaString(String aString) {
        this.aString = aString;
    }
    public String getbString() {
        return bString;
    }
    public void setbString(String bString) {
        this.bString = bString;
    }
    public String getcString() {
        return cString;
    }
    public void setcString(String cString) {
        this.cString = cString;
    }
    public ArrayList<String> getdStrings() {
        return dStrings;
    }
    public void setdStrings(ArrayList<String> dStrings) {
        this.dStrings = dStrings;
    }
    public ArrayList<CommonListResultStepParcelble> geteArrayList() {
        return eArrayList;
    }
    public void seteArrayList(ArrayList<CommonListResultStepParcelble> eArrayList) {
        this.eArrayList = eArrayList;
    }
    private void readParcel(Parcel in) {
        this.aString = in.readString();
        this.bString = in.readString();
        this.cString = in.readString();
        in.readStringList(dStrings);
        in.readList(eArrayList, CommonListResultStepParcelble.class.getClassLoader());
    }
    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(aString);
        dest.writeString(bString);
        dest.writeString(cString);
        dest.writeStringList(dStrings);
        dest.writeList(eArrayList);
    }
    public static final Parcelable.Creator<CommonListResultParcelble> CREATOR = new Creator<CommonListResultParcelble>() {
        @Override
        public CommonListResultParcelble createFromParcel(Parcel source) {
            return new CommonListResultParcelble(source);
        }
        @Override
        public CommonListResultParcelble[] newArray(int size) {
            return new CommonListResultParcelble[size];
        }
    };
}

public class CommonListResultStepParcelble implements Parcelable {

    private String step1;
    private String step2;
    public String getStep1() {
        return step1;
    }
    public void setStep1(String step1) {
        this.step1 = step1;
    }
    public String getStep2() {
        return step2;
    }
    public void setStep2(String step2) {
        this.step2 = step2;
    }
    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(step1);
        dest.writeString(step2);
    }
    public static final Parcelable.Creator<CommonListResultStepParcelble> CREATOR = new Creator<CommonListResultStepParcelble>() {
        @Override
        public CommonListResultStepParcelble createFromParcel(Parcel source) {
            CommonListResultStepParcelble commonListResultStepParcelble = new CommonListResultStepParcelble();
            commonListResultStepParcelble.step1 = source.readString();
            commonListResultStepParcelble.step2 = source.readString();
            return commonListResultStepParcelble;
        }
        @Override
        public CommonListResultStepParcelble[] newArray(int size) {
            return new CommonListResultStepParcelble[size];
        }
    };
}

MainActivity---->ParcebleActivity

private void sendParceltoActivity() {

        CommonListResultParcelble commonListResult = new CommonListResultParcelble();
        commonListResult.setaString("a");
        commonListResult.setbString("b");
        commonListResult.setcString("c");
        ArrayList<String> cArrayList = new ArrayList<String>();
        cArrayList.add("d1");
        cArrayList.add("d2");
        commonListResult.setdStrings(cArrayList);
        ArrayList<CommonListResultStepParcelble> steps = new ArrayList<CommonListResultStepParcelble>();
        CommonListResultStepParcelble commonListResultStep = new CommonListResultStepParcelble();
        commonListResultStep.setStep1("step3.1");
        commonListResultStep.setStep2("step3.2");
        steps.add(commonListResultStep);
        CommonListResultStepParcelble commonListResultStep2 = new CommonListResultStepParcelble();
        commonListResultStep2.setStep1("step4.1");
        commonListResultStep2.setStep2("step4.2");
        steps.add(commonListResultStep2);
        commonListResult.seteArrayList(steps);
        Log.e("insert size", "size :" + commonListResult.geteArrayList().size());
        Intent intent = new Intent(MainActivity.this, ParcebleActivity.class);
        intent.putExtra(KEY_PARCLE, commonListResult);
        startActivity(intent);
    }

public class ParcebleActivity extends ActionBarActivity {

    private CommonListResultParcelble commonListResultParcelble;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_parceble);
        commonListResultParcelble = (CommonListResultParcelble) getIntent().getParcelableExtra(
                MainActivity.KEY_PARCLE);
        Log.e("@@@@@@@@@@@@@@@@@@@", "is null :" + (null == commonListResultParcelble));
        if (null != commonListResultParcelble) {
            Log.e("ParcebleActivity", commonListResultParcelble.getaString()
                    + "\n ArrayList<String> :" + commonListResultParcelble.getdStrings().toString()
                    + "\n ArrayList<Object>:"
                    + commonListResultParcelble.geteArrayList().get(0).getStep1());
            int size = commonListResultParcelble.geteArrayList().size();
            Log.e("size", "size :" + size);
            for (int i=0;i<size ; i++) {
                CommonListResultStepParcelble stepParcelble = commonListResultParcelble.geteArrayList().get(i);
                Log.e("Step", "1 :" + stepParcelble.getStep1() + "  2:" + stepParcelble.getStep2());
            }
        }
    }

转载于:https://my.oschina.net/u/990728/blog/393580

你可能感兴趣的文章
JavaScript思维导图之<运算符>
查看>>
如何在Linux关机时执行命令
查看>>
[Java] Socket/ServerSocket 控制台简单聊天程序
查看>>
Google Guava 类库简介
查看>>
win2003(32位和64位序列号)
查看>>
LAMP及LNMP测试环境快速构建(yum版)
查看>>
常熟尚湖沙盘模拟公开课
查看>>
DHCP在企业网中的应用
查看>>
gitlab提示“Your account is locked”
查看>>
性能调优之sar
查看>>
apache 日志中记录代理IP以及真实客户端IP
查看>>
寻找数组中第二大的数_代码实现
查看>>
MySQL5.7-winx64的zip包安装过程
查看>>
windows 7安装时提示gpt分区无法安装windows系统
查看>>
GPT分区不能安装Linux/Redhat 5.x的解决方法
查看>>
我的友情链接
查看>>
运行WordCount报错:java.lang.OutOfMemoryError: Java heap space
查看>>
2条ce1链路捆绑成一条4M的链路,做负载均衡
查看>>
我的友情链接
查看>>
Hadoop序列化与Java序列化
查看>>