Проходя ArrayList с помощью намерения
Я пытаюсь передать arrayList в другое действие с помощью intents. Вот код в первом действии.
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;
здесь я пытаюсь получить список во втором действии. Здесь что-то не так?
Intent i = new Intent(); //This should be getIntent();
stock_list = new ArrayList<String>();
stock_list = i.getStringArrayListExtra("stock_list");
6 ответов:
в своем намерении получения вам нужно сделать:
Intent i = getIntent(); stock_list = i.getStringArrayListExtra("stock_list");так, как у вас есть, вы только что создали новое пустое намерение без каких-либо дополнительных функций.
Если у вас есть только один дополнительный, вы можете сконденсировать это:
stock_list = getIntent().getStringArrayListExtra("stock_list");
Я сделал этот Передача ArrayList в форме строка.
добавить
compile 'com.google.code.gson:gson:2.2.4'на зависимости блок построить.gradle.клик on синхронизация проекта с файлами Gradle
автомобили.java:
public class Cars { public String id, name; }FirstActivity.java
когда вы хочу to передать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);Get CarsModel by функции:
private Cars getCarModel(String id, String name){ Cars cars = new Cars(); cars.id = id; cars.name = name; return cars; }SecondActivity.java
вы должны импортировать
java.lang.reflect.Type;on onCreate () для получения 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); }надеюсь, что это сэкономит время, я сохранил его.
сделал
Если вы используете Общий Список Выбора С класс вместо определенного типа как
EX:
private ArrayList<Model> aListModel = new ArrayList<Model>();здесь Модель = Класс
Получение Намерения, Как:
aListModel = (ArrayList<Model>) getIntent().getSerializableExtra(KEY);ДОЛЖНЫ ПОМНИТЬ:
здесь Модель-класс должен быть реализован следующим образом: ModelClass реализует Serializable
public class StructMain implements Serializable { public int id; public String name; public String lastName;}
Это мой пункт . реализовать Serializable и создать ArrayList с
ArrayList<StructMain> items =new ArrayList<>();и положил в пакет
Bundle bundle=new Bundle(); bundle.putSerializable("test",items);и создать новое намерение, которое помещает Bundle в Intent
Intent intent=new Intent(ActivityOne.this,ActivityTwo.class); intent.putExtras(bundle); startActivity(intent);для получения пакета вставьте этот код
Bundle bundle = getIntent ().getExtras();
ArrayList<StructMain> item = (ArrayList<StructMain>) bundle.getSerializable("test");
Предположим, вам нужно передать arraylist следующего класса из текущего действия в следующее действие // класс объектов, которые находятся в arraylist // не забудьте реализовать класс из Сериализуемого интерфейса // Serializable означает, что он преобразует объект в поток байтов и помогает передать этот объект
public class Question implements Serializable { ... ... ... }в вашей текущей деятельности у вас, вероятно, есть ArrayList следующим образом
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);для того, чтобы получить коллекцию в рамках следующей деятельности
//get the bundle Bundle b = getIntent().getExtras(); //getting the arraylist from the key ArrayList<Question> q = (ArrayList<Question>) b.getSerializable("questions");
//arraylist/Pojo you can Pass using bundle like this Intent intent = new Intent(MainActivity.this, SecondActivity.class); Bundle args = new Bundle(); args.putSerializable("imageSliders",(Serializable)allStoriesPojo.getImageSliderPojos()); intent.putExtra("BUNDLE",args); startActivity(intent); Get SecondActivity like this Intent intent = getIntent(); Bundle args = intent.getBundleExtra("BUNDLE"); String filter = bundle.getString("imageSliders"); //Happy coding
Comments