Android:通过列表<;地质点>;参加另一项活动

Android:通过列表<;地质点>;参加另一项活动,android,android-activity,parcelable,Android,Android Activity,Parcelable,我有一个GeoPoint类型的数组列表 private List<GeoPoint> points = new ArrayList<GeoPoint>(); private List points=new ArrayList(); 我想将点传递给另一个活动并检索该活动中的数据。我该怎么做?我知道我必须使用包裹,但我搜索了,但找不到传递ArrayList的方法。此函数将帮助您:,java.util.ArrayList非常感谢。我正试图弄明白这段代码中什么是MyParce

我有一个GeoPoint类型的数组列表

private List<GeoPoint> points = new ArrayList<GeoPoint>();
private List points=new ArrayList();

我想将
传递给另一个活动并检索该活动中的数据。我该怎么做?我知道我必须使用
包裹
,但我搜索了,但找不到传递ArrayList的方法。

此函数将帮助您:,java.util.ArrayList非常感谢。我正试图弄明白这段代码中什么是
MyParcelable
?哦,对不起。我错了!MyParcelable不在我使用的developer.android.com上的示例中。MyParcelable应替换为上面的ParcelableGeoPoint.:)刚刚编辑以更正帖子。:)谢谢。好的,您还应该在ParcelableGeoPoint(Parcel in)中更改
int long
,再次感谢。传递字符串列表更容易。但有点不同。查看Intent函数Intent.putStringArrayListExtra(…)和Intent.getStringArrayListExtra(…)。它们就是你所需要的。没有额外的类。@PatrickBoos有什么特殊的理由不扩展GeoPoint来实现Parcelable吗?看起来创建的对象更少,内部代码看起来更干净。我喜欢这里的IS-A选项,而不是HAS-A。您应该使用服务或静态类成员。通过附加传递大型数据对象不是一个好主意。定义大型附加:)GeoPoint是一个只有两个整数的对象。但你是对的。如果它太大,那就不是个好主意。但是我认为一个地质点列表是可以的。@Falmari:静态类成员是全局的,全局的不好,mmmkay?传递大的额外值或使用静态变量。设计不好还是性能不好?我在想。。。 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); } } ArrayList<ParcelableGeoPoint> pointsExtra = new ArrayList<ParcelableGeoPoint>(); foreach(GeoPoint point: points) { pointsExtra.add(new ParcelableGeoPoint(point)); } intent.putExtra("geopoints", pointsExtra); ArrayList<ParcelableGeoPoint> pointsExtra = getIntent().getParcelableArrayListExtra("geopoints"); ArrayList<GeoPoint> points = new ArrayList<GeoPoint>(); foreach(ParcelableGeoPoint point: pointsExtra) { points.add(point.getGeoPoint()); }