在我的应用程序的一个活动中我有一个Intent来启动一个新的Activity,我想传递一个ArrayList,即一个ArrayList,其中每个项目都是一个自己的类的实例......我怎么能做到这一点?
我一直看到可能的getExtras(),比如getStringArrayList()或getParcelableArrayList()而且它没有用,我还没找到任何有效的类型。
任何人都可以帮助我吗?感谢。
这是我的班级:
public class ItemFile {
protected long id;
protected String nombre;
protected String rutaImagen;
protected boolean checked;
public ItemFile(long id, String nombre, String rutaImagen, boolean check) {
this.id = id;
this.nombre = nombre;
this.rutaImagen = rutaImagen;
this.checked = check;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getRutaImagen() {
return rutaImagen;
}
public void setRutaImagen(String rutaImagen) {
this.rutaImagen = rutaImagen;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked){
this.checked = checked;
}
}
如何更改它以设置Parcelable?
答案 0 :(得分:3)
首先确保MyClass类实现了Parcelable接口,然后使用此代码在其他Activity中获取ArrayList:
在你的第一个活动中做这样的事情:
ArrayList<MyClass> myClassList= new ArrayList<MyClass>();
Intent intent = new Intent(<YOUR ACTIVITY CONTEX>, <NEXT ACTIVITY>);
intent.putExtra("myClassList", myClassList);
startActivity(intent);
在您的下一个活动中,请执行以下操作:
ArrayList<MyClass> list = (ArrayList<MyClass>)getIntent().getExtras()getSerializable("myClassList");
答案 1 :(得分:1)
Make MyClass Parcelable 。见下面的例子。
public class MyClass implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
// Send it using
ArrayList<MyClass> list;
intent.putParcelableArrayListExtra("list", list);
答案 2 :(得分:0)
在第一项活动中
ArrayList<MyClass> fileList = new ArrayList<MyClass>();
Intent intent = new Intent(MainActivity.this, secondActivity.class);
intent.putExtra("FILES_TO_SEND", fileList);
startActivity(intent);
在Secand
activity:ArrayList<MyClass> filelist =(ArrayList<MyClass>)getIntent().getSerializableExtra("FILES_TO_SEND");
答案 3 :(得分:0)
我自己一直在为此苦苦挣扎,但我在 tutorialspoint 上找到了一个相当简单的解决方案,对我来说效果很好。
在源活动中,使用
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("key", numbers);
startActivity(intent);
然后在目标活动中,使用
ArrayList<String> numbersList = (ArrayList<String>) getIntent().getSerializableExtra("key");
完整教程的链接是:https://www.tutorialspoint.com/how-to-pass-an-arraylist-to-another-activity-using-intents-in-android