Pasar una lista a otra actividad en Android

He creado una lista y me gustaría pasar la lista a otra actividad, pero obtengo un error en la statement putExtra cuando creo el bash. Me pregunto si hay alguna manera fácil de pasar una lista de cadenas en lugar de una sola cadena.

Gracias

private List selItemList; private ListView mainListView = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.recipes); Button searchBtn = (Button) findViewById(R.id.searchButton); searchBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (selItemList == null) { Toast.makeText(getApplicationContext()," Please Make A Selection ", Toast.LENGTH_SHORT).show(); } else { Intent intent = new Intent(Recipes2.this, XMLParser.class); intent.putExtra("items_to_parse", selItemList); startActivityForResult(intent, 0); } } }); 

No puede pasar una lista en Intent.putExtras(String name, List list); . Creo que puedes usar un Array of String y pasarlo en putExtras esta manera:

 private List selItemList; private ListView mainListView = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.recipes); Button searchBtn = (Button) findViewById(R.id.searchButton); searchBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (selItemList == null) { Toast.makeText(getApplicationContext(), "Please Make A Selection", Toast.LENGTH_SHORT).show(); } else { String[] selItemArray = new String[selItemList.size()]; // Copy your List of Strings into the Array, and then pass it in your intent // .... Intent intent = new Intent(Recipes2.this, XMLParser.class); intent.putExtra("items_to_parse", selItemArray); startActivityForResult(intent, 0); } } }); 

Puede usar putStringArrayListExtra de la Intent

public Intent putStringArrayListExtra (String name, ArrayList value)

  private final List selItemList; private ListView mainListView = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.recipes); Button searchBtn = (Button) findViewById(R.id.searchButton); searchBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (selItemList == null) { Toast.makeText(Recipes2.this," Please Make A Selection ", Toast.LENGTH_SHORT).show(); } else { Intent intent = new Intent(Recipes2.this, XMLParser.class); intent.putStringArrayListExtra("items_to_parse", (ArrayList) selItemList); startActivityForResult(intent, 0); } } }); 

Y en su XMLParser.class:

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getExtras() != null) { for(String a : getIntent().getExtras().getStringArrayList("items_to_parse")) { Log.d("=======","Data " + a); } } 

Sé que es un poco tarde y esta pregunta ya tiene una respuesta, pero aquí hay otra manera.

simplemente crea otro objeto, Serializable como Serializable y dale una variable de lista y putExtra usando putExtra en tu intent esta manera:

 public class Category implements Serializable { private List objects; public Category() { } public List getObjects() { return objects; } public void setObjects(List objects) { this.objects = objects; } 

y luego para enviarlo haz esto:

 Category cat = new Category(); cat.setObjects(objects); intent.putExtra("listOfObjects",cat); startActivity(intent); 

y para obtener el objeto que ha creado, haga esto:

 Category cat = (Category) extras.get("listOfObjects"); cat.getObjects;