Activity之間經過Intent傳遞複雜Customer Object的兩種方式

1.Serializableide

特色,方便簡單
this

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;
    }

}get



MainActivity----->SerializableActivitystring


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);
    }
it

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());
        }
    }io



2.Parcelableclass

特色,稍微複雜,可是內存效率高
效率

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];
        }

    };
}List


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());            }        }    }

相關文章
相關標籤/搜索