Roh*_*mar 8 android parcelable android-activity
我有一个GeoPoint类型的ArrayList.
private List<GeoPoint> points = new ArrayList<GeoPoint>();
Run Code Online (Sandbox Code Playgroud)
我想传递points给另一个Activity并检索该活动中的数据.我该怎么做?我知道我必须使用parcelable但我搜索过,但找不到传递ArrayLists的方法.
Pat*_*oos 25
此功能将帮助您:http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String ,java.util.ArrayList <?extends android.os.Parcelable>)
但问题是,GeoPoint不是Parcelable.那么,你可以在这里做一个解决方法:
1)创建一个实现Parcelable的类:
public class ParcelableGeoPoint implements Parcelable {
private GeoPoint geoPoint;
public ParcelableGeoPoint(GeoPoint point) {
geoPoint = point;
}
public GeoPoint getGeoPoint() {
return geoPoint;
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(geoPoint.getLatitudeE6());
out.writeInt(geoPoint.getLongitudeE6());
}
public static final Parcelable.Creator<ParcelableGeoPoint> CREATOR
= new Parcelable.Creator<ParcelableGeoPoint>() {
public ParcelableGeoPoint createFromParcel(Parcel in) {
return new ParcelableGeoPoint(in);
}
public ParcelableGeoPoint[] newArray(int size) {
return new ParcelableGeoPoint[size];
}
};
private ParcelableGeoPoint(Parcel in) {
int lat = in.readInt();
int lon = in.readInt();
geoPoint = new GeoPoint(lat, lon);
}
}
2)发送到其他活动时(点是你的List <GeoPoint>:
ArrayList<ParcelableGeoPoint> pointsExtra = new ArrayList<ParcelableGeoPoint>();
foreach(GeoPoint point: points) {
pointsExtra.add(new ParcelableGeoPoint(point));
}
intent.putExtra("geopoints", pointsExtra);
3)在被叫活动中:
ArrayList<ParcelableGeoPoint> pointsExtra = getIntent().getParcelableArrayListExtra("geopoints");
ArrayList<GeoPoint> points = new ArrayList<GeoPoint>();
foreach(ParcelableGeoPoint point: pointsExtra) {
points.add(point.getGeoPoint());
}
代码应该工作,但未经测试.
| 归档时间: |
|
| 查看次数: |
12141 次 |
| 最近记录: |