Android继承Parcelable接口传递ArrayList、自定义类等复杂数据类型。
Dictionary.class
package com.shen.toolbox.function.entity;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
/**
* Created by SHEN on 2015/12/21.
*/
public class Dictionary implements Parcelable {
public String reason;
public String error_code;
public DictionaryResult result;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(reason);
dest.writeString(error_code);
dest.writeString(result.id);
dest.writeString(result.zi);
dest.writeString(result.py);
dest.writeString(result.wubi);
dest.writeString(result.pinyin);
dest.writeString(result.bushou);
dest.writeString(result.bihua);
dest.writeList(result.jijie);
dest.writeList(result.xiangjie);
}
public static final Parcelable.Creator<Dictionary> CREATOR=new Creator<Dictionary>() {
@Override
public Dictionary createFromParcel(Parcel source) {
Dictionary dictionary=new Dictionary();
dictionary.reason=source.readString();
dictionary.error_code=source.readString();
DictionaryResult dictionaryResult=new DictionaryResult();
dictionaryResult.id=source.readString();
dictionaryResult.zi=source.readString();
dictionaryResult.py=source.readString();
dictionaryResult.wubi=source.readString();
dictionaryResult.pinyin=source.readString();
dictionaryResult.bushou=source.readString();
dictionaryResult.bihua=source.readString();
dictionaryResult.jijie=source.readArrayList(String.class.getClassLoader());
dictionaryResult.xiangjie=source.readArrayList(String.class.getClassLoader());
dictionary.result=dictionaryResult;
return dictionary;
}
@Override
public Dictionary[] newArray(int size) {
return new Dictionary[size];
}
};
//静态内部类
public static class DictionaryResult{
public String id;
public String zi;
public String py;
public String wubi;
public String pinyin;
public String bushou;
public String bihua;
public ArrayList<String> jijie;
public ArrayList<String> xiangjie;
}
}
传递对象
Intent intent=new Intent(DictionaryActivity.this,DictionaryDetailActivity.class);
Bundle bundle=new Bundle();
bundle.putParcelable("Dictionary", dictionary);
intent.putExtras(bundle);
startActivity(intent);
接收对象
Dictionary dictionary=(Dictionary) getIntent().getParcelableExtra("Dictionary");
TextView tvDetailedAnnotation=(TextView) findViewById(R.id.tv_detailed_annotation);
for(int i=0;i<dictionary.result.xiangjie.size();i++) {
tvDetailedAnnotation.append(dictionary.result.xiangjie.get(i) + "\n");
}