0

我有以下课程:

public class Ad extends ListItem implements Parcelable {


private String _type;
    private String _recordID; 
    private String _line1;
    private String _line2;
    private String _line3;
    private String _line4;
    private String _url;
    private Double _longitude;
    private Double _latitude;


public Ad() {

    }

    public Ad(Parcel parceledAd) {

        set_url(parceledAd.readString());
        set_latitude(parceledAd.readDouble());
        set_longitude(parceledAd.readDouble());
        set_recordID(parceledAd.readString());
        set_line1(parceledAd.readString());
        set_line2(parceledAd.readString());
        set_line3(parceledAd.readString());
        set_line4(parceledAd.readString());
    }

// getters and setters for appropiate fields are skipped but they exsist.

<pre>// inherited from listItem
    @Override
    public ListItemType getType() {
        return ListItemType.Ad;
    }
    <pre>// inherited from the parcelable interface</pre>

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parceledAd, int flags) {

        parceledAd.writeString(get_url());
        parceledAd.writeDouble(get_latitude());
        parceledAd.writeDouble(get_longitude());
        parceledAd.writeString(get_recordID());
        parceledAd.writeString(get_line1());
        parceledAd.writeString(get_line2());
        parceledAd.writeString(get_line3());
        parceledAd.writeString(get_line4());

    }

    public static final Parcelable.Creator<Ad> CREATOR = new Parcelable.Creator<Ad>() {

        @Override
        public Ad createFromParcel(Parcel parceledAd) {
            return new Ad(parceledAd);
        }

        @Override
        public Ad[] newArray(int size) {
            return new Ad[size];
        }

    };

}

在源活动上,我有一个类型的数组列表:-

private ArrayList<ListItem> _items = new ArrayList<ListItem>();

其中包含一个ad对象列表(它是ListItem仅包含一个enum.

我想创建一个包裹Ad对象的数组列表_items ArrayList<ListItem>

parcelised 实现是在 Ad 类上执行的。

我将不胜感激一些关于如何实现这一目标的例子。

我尝试使用开发者网站中描述的方法:

Intent i=new Intent(this,MapActivity.class);
i.putParcelableArrayListExtra("ads", (ArrayList<? extends Parcelable>) _items);

在源活动和

_items=intent.getParcelableArrayListExtra("ads");

在目标活动中,但出现错误:

绑定不匹配:Intent 类型的通用方法 getParcelableArrayListExtra(String) 不适用于参数 (String)。推断的类型 ListItem 不是有界参数的有效替代品

请帮忙

4

1 回答 1

0

在您的代码上,Adclass implements Parcelable, not ListItem, make ListItemimplementParcelable然后您的代码应该可以工作。

于 2016-08-08T10:30:06.407 回答