安卓:通过名单,其中,GeoPoint对象>另一个活动 [英] Android: Pass List<GeoPoint> to another Activity

查看:166
本文介绍了安卓:通过名单,其中,GeoPoint对象>另一个活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有型的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆