2014-11-06 35 views
1

從我的應用程序的活動我有一個意圖啓動一個新的活動,我想傳遞一個ArrayList,即一個ArrayList,其中每個項目是一個自己的類的實例。 ..我怎麼能做到這一點?獲取ArrayList <MyClass> getIntent()。getExtras()

我一直看到可能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?

+1

你可以嘗試通過實現與parcabl MyClass即 看看這裏。 http://stackoverflow.com/a/7181792/1602333 – 2014-11-06 12:36:10

+0

這是最好的答案。在這篇文章中,解釋了我的問題。這篇文章的最後回答非常有用。 – KryNaC 2014-11-06 19:28:45

回答

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"); 
1

讓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); 
3

首先確保MyClass的類實現Parcelable接口,然後使用這個代碼讓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"); 
相關問題