我有一个类型为 GeoPoint 的 ArrayList。
private List<GeoPoint> points = new ArrayList<GeoPoint>();
我希望将points
传递给另一个Activity,并在该Activity中检索数据。我该怎么做? 我知道我必须使用parcelable
,但是我搜索了一下,没有找到一种传递ArrayList的方法。
我有一个类型为 GeoPoint 的 ArrayList。
private List<GeoPoint> points = new ArrayList<GeoPoint>();
我希望将points
传递给另一个Activity,并在该Activity中检索数据。我该怎么做? 我知道我必须使用parcelable
,但是我搜索了一下,没有找到一种传递ArrayList的方法。
这个函数将会帮助你: http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String, java.util.ArrayList<? extends android.os.Parcelable>)
然而问题在于,GeoPoint是不可序列化的。可以在此做一个变通处理:
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) 当向另一个活动发送时(points是你的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()); }
代码应该能够工作,但未经过测试。
Parcelable.Creator 是原始类型。对泛型类型 Parcelable.Creator<T> 的引用应进行参数化
?我可以忽略它吗? - Rohith NandakumarList<String> names
吗? - Rohith Nandakumar