我有一个GeoPoint类型的ArrayList。
private List<GeoPoint> points = new ArrayList<GeoPoint>();
我想将
points
传递给另一个Activity并检索该Activity中的数据。我该怎么做?我知道我必须使用parcelable
,但是我进行了搜索,但是找不到传递ArrayLists的方法。 最佳答案
该函数将帮助您:http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String,java.util.ArrayList )
但是问题是,GeoPoint无法打包。好吧,您可以在此处执行解决方法:
1)创建一个实现Parcelable的类:
公共(public)类ParcelableGeoPoint实现了Parcelable {
专用的GeoPoint geoPoint;
公共(public)ParcelableGeoPoint(GeoPoint点){
geoPoint =点;
}
公共(public)GeoPoint getGeoPoint(){
返回geoPoint;
}
public int describeContents(){
返回0;
}
公共(public)无效writeToParcel(打包,int标志){
out.writeInt(geoPoint.getLatitudeE6());
out.writeInt(geoPoint.getLongitudeE6());
}
公共(public)静态最终Parcelable.Creator 创建者
= new Parcelable.Creator (){
public ParcelableGeoPoint createFromParcel(Parcel in){
返回新的ParcelableGeoPoint(in);
}
公共(public)ParcelableGeoPoint [] newArray(int size){
返回新的ParcelableGeoPoint [size];
}
};
私有(private)ParcelableGeoPoint(包裹放入){
int lat = in.readInt();
int lon = in.readInt();
geoPoint =新的GeoPoint(lat,lon);
}
}
2)发送到其他 Activity 时(点是您的List :
ArrayList pointsExtra = new ArrayList ();
foreach(GeoPoint点:点){
pointsExtra.add(new ParcelableGeoPoint(point));
}
intent.putExtra(“geopoints”,pointsExtra);
3)在被叫 Activity 中:
ArrayList pointsExtra = getIntent()。getParcelableArrayListExtra(“geopoints”);
ArrayList 点=新的ArrayList ();
foreach(ParcelableGeoPoint point:pointsExtra){
points.add(point.getGeoPoint());
}
代码应该可以使用,但是未经测试。