gpt4 book ai didi

Android:将 List 传递给另一个 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:06 26 4
gpt4 key购买 nike

我有一个 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 不是 Parcelable。那么,您可以在这里做一个解决方法:

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) 发送到其他 Activity 时(点是您的 List :

ArrayList<ParcelableGeoPoint> pointsExtra = new ArrayList<ParcelableGeoPoint>();foreach(GeoPoint point: points) {   pointsExtra.add(new ParcelableGeoPoint(point));}intent.putExtra("geopoints", pointsExtra);

3) 在调用的 Activity 中:

ArrayList<ParcelableGeoPoint> pointsExtra =  getIntent().getParcelableArrayListExtra("geopoints");ArrayList<GeoPoint> points = new ArrayList<GeoPoint>();foreach(ParcelableGeoPoint point: pointsExtra) {   points.add(point.getGeoPoint());}

代码应该可以工作,但未经测试。

关于Android:将 List<GeoPoint> 传递给另一个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com