una pasar otra como clase activity android arraylist android-intent

android - activity - como pasar un arraylist de una clase a otra



Pasar ArrayList a través de la intención (5)

En su intención de recibir, debe hacer:

Intent i = getIntent(); stock_list = i.getStringArrayListExtra("stock_list");

De la forma en que lo tienes, acabas de crear un nuevo intento vacío sin extras.

Si solo tiene un solo extra, puede condensar esto a:

stock_list = getIntent().getStringArrayListExtra("stock_list");

Estoy tratando de pasar un arrayList a otra actividad usando intents. Aquí está el código en la primera actividad.

case R.id.editButton: Toast.makeText(this, "edit was clicked", Toast.LENGTH_LONG).show(); Intent intent = new Intent(this, editList.class); intent.putStringArrayListExtra("stock_list", stock_list); startActivity(intent); break;

Aquí es donde trato de recuperar la lista en la segunda actividad. ¿Hay algo mal aquí?

Intent i = new Intent(); //This should be getIntent(); stock_list = new ArrayList<String>(); stock_list = i.getStringArrayListExtra("stock_list");


He hecho esto al Pasar ArrayList en forma de String .

  1. Agregue compile ''com.google.code.gson:gson:2.2.4'' en dependencias bloque build.gradle .

  2. Haga clic en Sync Project con Gradle Files

Cars.java :

public class Cars { public String id, name; }

FirstActivity.java

Cuando quiera pasar ArrayList :

List<Cars> cars= new ArrayList<Cars>(); cars.add(getCarModel("1", "A")); cars.add(getCarModel("2", "B")); cars.add(getCarModel("3", "C")); cars.add(getCarModel("4", "D")); Gson gson = new Gson(); String jsonCars = gson.toJson(cars); Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("list_as_string", jsonCars); startActivity(intent);

Obtenga CarsModel por función :

private Cars getCarModel(String id, String name){ Cars cars = new Cars(); cars.id = id; cars.name = name; return cars; }

SecondActivity.java

Tienes que importar java.lang.reflect.Type ;

en onCreate () para recuperar ArrayList :

String carListAsString = getIntent().getStringExtra("list_as_string"); Gson gson = new Gson(); Type type = new TypeToken<List<Cars>>(){}.getType(); List<Cars> carsList = gson.fromJson(carListAsString, type); for (Cars cars : carsList){ Log.i("Car Data", cars.id+"-"+cars.name); }

Espero que esto ahorre tiempo, lo guardé.

Hecho


Supongamos que necesita pasar una lista de arrays de la siguiente clase de la actividad actual a la siguiente actividad // clase de los objetos en la lista de arreglos // recuerde implementar la clase desde la interfaz Serializable // Serializable significa que convierte el objeto en una secuencia de bytes y ayuda transferir ese objeto

public class Question implements Serializable { ... ... ... }

en su actividad actual, probablemente tenga una ArrayList de la siguiente manera

ArrayList<Question> qsList = new ArrayList<>(); qsList.add(new Question(1)); qsList.add(new Question(2)); qsList.add(new Question(3)); // intialize Bundle instance Bundle b = new Bundle(); // putting questions list into the bundle .. as key value pair. // so you can retrieve the arrayList with this key b.putSerializable("questions", (Serializable) qsList); Intent i = new Intent(CurrentActivity.this, NextActivity.class); i.putExtras(b); startActivity(i);

para obtener el arraylist dentro de la siguiente actividad

//get the bundle Bundle b = getIntent().getExtras(); //getting the arraylist from the key ArrayList<Question> q = (ArrayList<Question>) b.getSerializable("questions");


si usa la lista de matriz genérica con clase en lugar de tipo específico como

EX:

private ArrayList<Model> aListModel = new ArrayList<Model>();

Aquí, Modelo = Clase

Recibiendo la intención como:

aListModel = (ArrayList<Model>) getIntent().getSerializableExtra(KEY);

DEBE RECORDAR:

Aquí Model-class debe implementarse como: ModelClass implementa Serializable


public class StructMain implements Serializable { public int id; public String name; public String lastName;

}

este es mi artículo implementar Serializable y crear ArrayList

ArrayList<StructMain> items =new ArrayList<>();

y poner en Bundle

Bundle bundle=new Bundle(); bundle.putSerializable("test",items);

y crea un nuevo Intento que pone Bundle a prueba

Intent intent=new Intent(ActivityOne.this,ActivityTwo.class); intent.putExtras(bundle); startActivity(intent);

para recibir paquete inserte este código

Paquete Bundle = getIntent (). GetExtras ();

ArrayList<StructMain> item = (ArrayList<StructMain>) bundle.getSerializable("test");