我正在尝试在活动之间传递对象的自定义ArrayList。我一直得到错误的参数错误。阅读现有问题,但没有一个能解决问题。
你能指点我正确的方向吗?
CODE BREAKDOWN:
public class object1 implements parcelable{
public void writeToParcel(Parcel dest, int flags) {
//things that need to be written
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public MoodEvent createFromParcel(Parcel in) {
return new MoodEvent(in);
}
public MoodEvent[] newArray(int size) {
return new MoodEvent[size];
}
};
public class list1{ //** "implements Parceblable" gives error**
private ArrayList<object1> ArrayList1, ArrayList2; //** Filters used on **ArrayList2
public void writeToParcel(Parcel out) {
out.writeTypedList(ArrayList1);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public MoodEvent createFromParcel(Parcel in) {
return new MoodEvent(in);
}
public MoodEvent[] newArray(int size) {
return new MoodEvent[size];
}
};
}
public class someActivity {
.
.
.
mapIntent = new Intent(oldActivity.this, NewActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList(moodEventList); //**wrong argument types on both lines**
mapIntent.putParcelableArrayListExtra("mylist",moodEventList);
.
.
.
}
答案 0 :(得分:2)
putParcelableArrayList
将期望包含实现Parcelable
接口的对象的ArrayList
假设您的object1类正确实现了这一点,您只能使用常规ArrayList<object1>
实例,并且您不需要自定义list1
类。
如果您真的想要,并且您的list1
类也实现了界面,您可以使用putParcelable
方法,因为您的列表现在只是一个可分配的。
答案 1 :(得分:0)
试试这个
public class YOUR_CLASS_NAME implements Serializable
答案 2 :(得分:0)
您可以尝试以下代码来发送和接收自定义的arraylist 从一个活动到另一个活动的对象。
您可以尝试使用以下代码来发送可解析的arraylist。
private List<ResourceTypeList> mResourceList;
public void sendParcableIntent()
{
Intent i=new Intent(ResourcePhoneBook.this,ResourceSort.class);
Bundle toSend = new Bundle();
toSend.putParcelableArrayList("Data", (ArrayList<? extends Parcelable>)mResourceList);
i.putExtras(toSend);
startActivity(i);
}
您可以使用正常的ArrayList格式获得parcelable arraylist。
ArrayList mArraylist1;
Bundle bdl = getIntent().getExtras();
mArraylist1 = bdl.getParcelableArrayList("Data");
public class ResourceTypeList implements Parcelable {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("resource_type")
@Expose
private String resourceType;
/**
*
* @return
* The id
*/
public Integer getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(Integer id) {
this.id = id;
}
/**
*
* @return
* The resourceType
*/
public String getResourceType() {
return resourceType;
}
/**
*
* @param resourceType
* The resource_type
*/
public void setResourceType(String resourceType) {
this.resourceType = resourceType;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(resourceType);
dest.writeInt(id);
}
public ResourceTypeList(String resourceType) {
this.resourceType = resourceType;
}
protected ResourceTypeList(Parcel in) {
resourceType = in.readString();
id= in.readInt();
}
public static final Creator<ResourceTypeList> CREATOR = new Creator<ResourceTypeList>() {
@Override
public ResourceTypeList createFromParcel(Parcel source) {
return new ResourceTypeList(source);
}
@Override
public ResourceTypeList[] newArray(int size) {
return new ResourceTypeList[size];
}
};
}