Android, как поставить ArrayList <myObject>в Intent? - PullRequest
6 голосов
/ 21 июля 2011

У меня есть две операции, в первой я создаю ArrayList объекта myObject. Во втором задании мне нужно получить этот Arraylist. Я не знаю, как это сделать с намерением?

(Объект - это класс, который я создал)

Заранее спасибо.

Ответы [ 4 ]

6 голосов
/ 21 июля 2011

Если вы сделаете, чтобы ваш класс Object реализовал Parcelabel , вы можете упаковать свой arraylist в пакет, который вы отправляете с намерением

, см. эту ссылку для примера

1 голос
/ 21 июля 2011

Ваш класс myObject должен будет реализовать Parcelable .Затем вы можете использовать putParcelableArrayListExtra из своего намерения, чтобы передать его следующему действию и получить список с помощью getParcelableArrayListExtra

1 голос
/ 21 июля 2011

Обычно вы используете Bundle объекты для передачи информации между действиями, но они допускают только объекты простого типа.Как правило, для передачи более сложных типов объектов обычно требуется создать статический контекст какого-либо вида и установить для него значения, которые затем становятся доступны для второго действия.Мне кажется, что это грязно, но я уже перебрал это в своих приложениях.

0 голосов
/ 02 июля 2015

Я использовал вот так.

положить:

intent.putExtra("data", new DataWrapper(selectedTasks));
startActivity(intent);

получить:

DataWrapper dw = (DataWrapper) getIntent().getSerializableExtra("data");
ArrayList<SelectedTask> taskList = dw.getList();

Объект Arraylistдолжен быть сериализуемым

public class SelectedTask implements Serializable{

}

public class DataWrapper implements Serializable{
    private ArrayList<SelectedTask> slist;

       public DataWrapper(ArrayList<SelectedTask> data) {
          this.slist = data;
       }

       public ArrayList<SelectedTask> getList() {
          return this.slist;
       }
}
...