Pase de ArrayList <? implementa Parcelable> a Actividad

He buscado algunos temas pero no he encontrado una solución a mi problema.

public class Series implements Parcelable { private String name; private int numOfSeason; private int numOfEpisode; /** Constructors and Getters/Setters have been removed to make reading easier **/ public Series(Parcel in) { String[] data = new String[3]; in.readStringArray(data); this.name = data[0]; this.numOfSeason = Integer.parseInt(data[1]); this.numOfEpisode = Integer.parseInt(data[2]); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeStringArray(new String[] { this.name, String.valueOf(this.numOfSeason), String.valueOf(this.numOfEpisode) }); } private void readFromParcel(Parcel in) { name = in.readString(); numOfSeason = in.readInt(); numOfEpisode = in.readInt(); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public Series createFromParcel(Parcel in) { return new Series(in); } @Override public Series[] newArray(int size) { return new Series[size]; } }; 

}

En mi MainActivity tengo un ArrayList. Para hacer la lista editable dinámicamente necesito pasarla a otra actividad donde puedo editarla.

 ArrayList<Series> listOfSeries = new ArrayList<Series>(); public void openAddActivity() { Intent intent = new Intent(this, AddActivity.class); intent.putParcelableArrayListExtra( "com.example.episodetracker.listofseries", (ArrayList<? extends Parcelable>) listOfSeries); startActivity(intent); } 

Necesito emitir la lista, de lo contrario Eclipse me da el siguiente mensaje de error. El método putParcelableArrayListExtra (String, ArrayList) en el tipo Intent no es aplicable para los argumentos (String, List)

¿Es esta la forma correcta de hacerlo?

  ArrayList<Series> list = savedInstanceState .getParcelableArrayList("com.example.episodetracker.listofseries"); 

Esta es la manera en que trato de leer los datos en otra actividad.

Se está estrellando en la línea de arriba. la parte getParcelableArrayList.

El probelm está en la escritura hacia fuera a la parcela y leyendo adentro de la parcela …

 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(numOfSeason); dest.writeInt(numOfEpisode); } private void readFromParcel(Parcel in) { name = in.readString(); numOfSeason = in.readInt(); numOfEpisode = in.readInt(); } 

Lo que escribes tiene que coincidir con lo que lees en …

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent i = new Intent(this,SecondActivity.class); ArrayList<testparcel> testing = new ArrayList<testparcel>(); i.putParcelableArrayListExtra("extraextra", testing); startActivity(i); } public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayList<testparcel> testing = this.getIntent().getParcelableArrayListExtra("extraextra"); } } 

El código de arriba ha creado a partir de dos activties el primero lanza el segundo y funciona bien pude sacar el parcelable sin problema.

He utilizado putParcelableArrayList(<? extends Parcelable>) de un objeto Bundle . No directamente de un Objeto de Intención. (Realmente no sé cuál es la diferencia). pero utilizo para usar de esta manera:

 ArrayList<ParcelableRow> resultSet = new ArrayList<ParcelableRow>(); resultSet = loadData(); Bundle data = new Bundle(); data.putParcelableArrayList("search.resultSet", resultSet); yourIntent.putExtra("result.content", data); startActivity(yourIntent); 

Más adelante en su nueva actividad, puede rellenar los datos insertados recientemente en el objeto Bundle de la siguiente manera:

 Bundle data = this.getIntent().getBundleExtra("result.content"); ArrayList<ParcelableRow> result = data.getParcelableArrayList("search.resultset"); 

Sólo recuerda que tu ArrayList<> debe contener sólo objetos parcelables. y sólo para asegurarse de que su haber pasado los datos puede comprobar si los datos recibidos es nulo o no, sólo para evitar problemas.

Debe utilizar el método putParcelableArrayListExtra() en la clase Intent .

Tal vez esto ayuda a alguien .. de lo contrario mi problema es que he utilizado write y readValue, pero debe coincidir con el tipo como writeInt, readInt writeString, readString y así sucesivamente

  • Monodroid poniendo objetos parcelables en un paquete
  • ¿Por qué es posible escribir una matriz booleana en un paquete pero no en un booleano?
  • Envío de la lista de objetos del array entre actividades con Parcelable
  • Uso de parceler (@Parcel) con Realm.io (Android)
  • Arraylist en objeto parcelable
  • Clase abstracta como parcelable
  • Android Parcelable Problema con array
  • Problema en la implementación de Parcelable conteniendo otros Parcelable
  • Android: Cualquier acceso directo a Serializable de Parcelable sin usar marshall ()?
  • La API de reproductor de YouTube para Android lanza "BadParcelableException ClaseNotFoundException al desmarcar: asc" con la nueva versión de YouTube
  • Android | Unmarshalling Tipo desconocido al utilizar datos parcelables en paquetes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.