Список 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);
}
Но я не могу поставить данные таким образом. Я задал этот вопрос ранее, но этого не произошло.
Незлая помощь. Также помогите мне, как получить данные в следующей деятельности.
Ответы
Ответ 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");