タイプ GeoPoint の ArrayList があります。
private List<GeoPoint> points = new ArrayList<GeoPoint>();
points別のアクティビティに渡し、そのアクティビティのデータを取得したいと考えています。どうすればいいのですか?を使用する必要があることはわかっていますがparcelable、検索しましたが、ArrayLists を渡す方法が見つかりませんでした。
タイプ GeoPoint の ArrayList があります。
private List<GeoPoint> points = new ArrayList<GeoPoint>();
points別のアクティビティに渡し、そのアクティビティのデータを取得したいと考えています。どうすればいいのですか?を使用する必要があることはわかっていますがparcelable、検索しましたが、ArrayLists を渡す方法が見つかりませんでした。
この関数が役に立ちます: 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 は Parcelable を実装します {
プライベート GeoPoint geoPoint;
public ParcelableGeoPoint(GeoPoint ポイント) {
geoPoint = ポイント;
}
public GeoPoint getGeoPoint() {
ジオポイントを返します。
}
public int describeContents() {
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) {
新しい ParcelableGeoPoint(in) を返します。
}
public ParcelableGeoPoint[] newArray(int サイズ) {
新しい ParcelableGeoPoint[サイズ] を返します。
}
};
private ParcelableGeoPoint(Parcel in) {
int lat = in.readInt();
int lon = in.readInt();
geoPoint = 新しい GeoPoint(緯度、経度);
}
}
2) 他のアクティビティに送信する場合 (ポイントは List<GeoPoint> です:
ArrayList<ParcelableGeoPoint> pointsExtra = new ArrayList<ParcelableGeoPoint>();
foreach(GeoPoint ポイント: ポイント) {
pointsExtra.add(新しい ParcelableGeoPoint(ポイント));
}
インテント.putExtra("ジオポイント", pointsExtra);
3) 呼び出されたアクティビティで:
ArrayList<ParcelableGeoPoint> pointsExtra = getIntent().getParcelableArrayListExtra("ジオポイント");
ArrayList<GeoPoint> ポイント = 新しい ArrayList<GeoPoint>();
foreach(ParcelableGeoPoint ポイント: pointsExtra) {
points.add(point.getGeoPoint());
}
コードは動作するはずですが、テストされていません。