使用getIntent()获取ArrayList <myclass> .getExtras()</myclass>

时间:2014-11-06 12:31:16

标签: android android-intent arraylist

在我的应用程序的一个活动中我有一个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?

4 个答案:

答案 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