Array List Intent extra en Java

Estoy tratando de omitir mi ArrayList través de Intent . Pero no puedo encontrar lo que escribir en extra? Cualquier método get me estoy recibiendo errores como "no es aplicable para cadena".

Detalles del artículo:

 public class ItemDetails { public String getName() { return name; } public void setName(String name) { this.name = name; } public String getItemDescription() { return itemDescription; } public void setItemDescription(String itemDescription) { this.itemDescription = itemDescription; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } public int getImageNumber() { return imageNumber; } public void setImageNumber(int imageNumber) { this.imageNumber = imageNumber; } public int getVideoNumber() { return videoNumber; } public void setVideoNumber(int videoNumber) { this.videoNumber = videoNumber; } public void setChild(ArrayList<ItemDetails> item_child) { this.item_child = item_child; } public ArrayList<ItemDetails> getChild() { return this.item_child; } public void setParent(ArrayList<ItemDetails> item_parent) { this.item_parent = item_parent; } public ArrayList<ItemDetails> getParent() { return this.item_parent; } private String name ; private String itemDescription; private String price; private int imageNumber; private int videoNumber; private ArrayList<ItemDetails> item_child; private ArrayList<ItemDetails> item_parent; } 

Mi clase:

 static class ViewHolder { TextView txt_itemName; TextView txt_itemDescription; TextView txt_itemPrice; ImageView itemImage; ArrayList<ItemDetails> item_parent; ArrayList<ItemDetails> item_child; } 

Mi putExtra:

 intObj.putExtra("exerciselist",obj_itemDetails.getChild()); 

Función GetChild:

 public ArrayList<ItemDetails> getChild() { return this.item_child; } 

Pero no puedo encontrar cómo se supone que escribir para obtener arrayList?

 ArrayList<ItemDetails> child1 = getIntent().????????? 

Pero no puedo encontrar cómo se supone que ı se supone que escribir para obtener arrayList

Respuesta corta: no se puede. Sólo puede pasar ArrayList<String> y, a continuación, recuperarlo con

 getIntent().getStringArrayListExtra("key"); 

Pero . Si desea pasar objetos personalizados a través de Intent que sus objetos tienen que implementar:

  • Parcelable interface o Serializable interface

Usted puede elegir uno de ellos. Ambos funcionan igual pero tienen implementaciones diferentes.

Interfaz parcelable:

Si elige Interfaz parcelable, su clase ItemDetails tiene que implementar Parcelable. Entonces usted puede ponerlo como

 intent.putParcelableArrayListExtra("key", value); 

Y recuperarlo como:

 getIntent().getParcelableArrayListExtra("key"); 

No voy a escribir la implementación Parcelable porque requiere un poco más de código. Aquí está un buen ejemplo .

Interfaz serializable:

Si elige Serializable interfaz le sugiero que cree una clase llamada por ejemplo ItemDetailsWrapper que envolverá su ArrayList(s)<ItemDetails>

Ambos, es decir, ItemDetailsWrapper y ItemDetails clase tienen que implementar interfaz Serializable. Ahora usted es capaz de pasar a través de Intent como este:

 getIntent().putExtra("key", <serializableClass>); // storing getIntent().getSerializableExtra("key"); // retrieving 

Ejemplo de implementación:

 public class ItemDetailsWrapper implements Serializable { private static final long serialVersionUID = 1L; private ArrayList<ItemDetails> itemDetails; public ItemDetailsWrapper(ArrayList<ItemDetails> items) { this.itemDetails = items; } public ArrayList<ItemDetails> getItemDetails() { return itemDetails; } } public class ItemDetails implements Serializable { private static final long serialVersionUID = 1L; // getters, setters and properties } 

Y cómo pasar por Actividades:

 ItemDetailsWrapper wrapper = new ItemDetailsWrapper(list); Intent i = new Intent(<context>, <targetActivity>); i.putExtra("obj", wrapper); // i.putExtra("obj", new ItemDetailsWrapper(list)); // retrieving ItemDetailsWrapper wrap = (ItemDetailsWrapper) getIntent().getSerializableExtra("obj"); ArrayList<ItemDetails> list = wrap.getItemDetails(); 
  • Dagger 2 dependencias de componentes
  • ¿Las aplicaciones de Android son aplicaciones Java reales?
  • Usando ScreenUtils para guardar la captura de pantalla como imagen en libgdx
  • glClearColor no funciona correctamente (opengl android)
  • Uso del sensor magnético
  • ¿Es onResume () llamado antes onActivityResult ()?
  • Entender los lazos estrechos de Android / Spin-On-Suspender el error
  • Uso de Gson para analizar la matriz y el objeto Json sin nombre
  • OnActionExpandListener en menuitem no funciona. ¿Como arreglarlo?
  • ¿Qué cargador de clases usar con Parcel.readHashMap?
  • Manejador o temporizador android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.