Список Intent.putExtra

Возможный дубликат:
Как поставить список в намерении

Я хочу передать список из одной активности в другую. До сих пор я не был успешным. Это мой код.

//desserts.java

private List<Item> data; @Override public void onCreate(Bundle icicle) { //Code data.add(new Item(10, "dessert1")); data.add(new Item(11, "dessert2")); data.add(new Item(12, "dessert3")); data.add(new Item(13, "dessert4")); data.add(new Item(14, "dessert5")); data.add(new Item(15, "dessert6")); data.add(new Item(16, "dessert7")); data.add(new Item(17, "dessert8")); data.add(new Item(18, "dessert9")); data.add(new Item(19, "dessert10")); data.add(new Item(20, "dessert11")); //Some more code } @Override public void onClick(View v) { Intent view_order_intent = new Intent(this, thirdpage.class); view_order_intent.putExtra("data", data); startActivity(view_order_intent); } 

Но я не могу передавать данные таким образом. Я задал этот вопрос раньше, но не так много произошло.
Незлая помощь. Также помогите мне, как получить данные в следующей деятельности.

Solutions Collecting From Web of "Список Intent.putExtra"

Предполагая, что ваш список является списком строк, делайте данные ArrayList<String> и используйте intent.putStringArrayListExtra("data", data)

Вот скелет кода, который вам нужен:

  1. Объявить список

     private List<String> test; 
  2. Инициировать список в соответствующем месте

     test = new ArrayList<String>(); 

    И добавьте данные, необходимые для test .

  3. Переходите к намерению следующим образом:

     Intent intent = getIntent(); intent.putStringArrayListExtra("test", (ArrayList<String>) test); 
  4. Извлеките данные следующим образом:

     ArrayList<String> test = getIntent().getStringArrayListExtra("test"); 

Надеюсь, это поможет.

Если вы используете ArrayList вместо списка, тогда ваша проблема будет решена. В вашем коде только изменить List в ArrayList.

 private List<Item> data; 

Вы можете сделать это двумя способами, используя

  • Сериализуемый

  • Parcelable.

Этот пример покажет вам, как реализовать его с помощью сериализуемых

 class Customer implements Serializable { // properties, getter setters & constructor } // This is your custom object Customer customer = new Customer(name, address, zip); Intent intent = new Intent(); intent.setClass(SourceActivity.this, TargetActivity.this); intent.putExtra("customer", customer); startActivity(intent); // Now in your TargetActivity Bundle extras = getIntent().getExtras(); if (extras != null) { Customer customer = (Customer)extras.getSerializable("customer"); // do something with the customer } 

Теперь посмотрим на это. Эта ссылка даст вам краткий обзор того, как ее реализовать с помощью Parcelable.

Посмотри на это. , Это обсуждение даст вам знать, что гораздо лучший способ его реализовать.

Благодарю.

  //To send from the activity that is calling another activity via myIntent myIntent.putExtra("id","10"); startActivity(myIntent); //To receive from another Activity Bundle bundle = getIntent().getExtras(); String id=bundle.getString("id");