Подтвердить что ты не робот

Список 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);  
}   

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

4b9b3361

Ответ 1

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

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

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

    private List<String> test;
    
  • Список инициализации в соответствующем месте

    test = new ArrayList<String>();
    

    и добавьте данные в соответствии с test.

  • Перейдите к намерению следующим образом:

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

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

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

Ответ 2

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

private List<Item> data;

Ответ 3

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

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

  • 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
}

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

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

Спасибо.

Ответ 4

 //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");