安卓:通过名单,其中,GeoPoint对象&GT;另一个活动 [英] Android: Pass List<GeoPoint> to another Activity
问题描述
我有型的GeoPoint的ArrayList
I have an ArrayList of type GeoPoint.
private List<GeoPoint> points = new ArrayList<GeoPoint>();
我想通过分
到另一个活动和retrive数据该活动。我该怎么办呢?我知道我必须使用 parcelable
但我搜查,但未能找到一种方法来传递的ArrayList
I want to pass points
to another Activity and retrive the data in that activity. How do I do it? I know I have to use the parcelable
but I searched, but could not find a way to pass ArrayLists.
推荐答案
此功能将帮助您:<一href="http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String">http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String,的java.util.ArrayList&LT ;?扩展android.os.Parcelable&GT;)
This function will help you: http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String, java.util.ArrayList<? extends android.os.Parcelable>)
但问题是,GeoPoint对象不是Parcelable。那么,你可以做一个变通方法在这里:
But the problem is, that GeoPoint is not Parcelable. Well, you can do a workaround here:
1)创建一个类,实现Parcelable:
1) Create a class, that implements 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)发送到另一个活动时(点就是你的名单,其中,GeoPoint对象&GT;
2) when sending to the other activity (points is your List<GeoPoint>:
ArrayList<ParcelableGeoPoint> pointsExtra = new ArrayList<ParcelableGeoPoint>();
foreach(GeoPoint point: points) {
pointsExtra.add(new ParcelableGeoPoint(point));
}
intent.putExtra("geopoints", pointsExtra);
3)在所谓的活动:
3) in the called activity:
ArrayList<ParcelableGeoPoint> pointsExtra = getIntent().getParcelableArrayListExtra("geopoints");
ArrayList<GeoPoint> points = new ArrayList<GeoPoint>();
foreach(ParcelableGeoPoint point: pointsExtra) {
points.add(point.getGeoPoint());
}
code应该工作,但未经测试。
code should work, but is untested.
这篇关于安卓:通过名单,其中,GeoPoint对象&GT;另一个活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!