Передача списка объектов в PagerActivity

У меня есть список статей, взятых из списка, и я хочу показать выбранную статью в PagerActivity, чтобы пользователь мог легко переходить к статье до и после окончания чтения.

В iOS я могу просто передать список (или ссылку) с объектами статьи в PagerActivity. В Android, однако, вызов Intent не позволяет передавать списки. Так что будет лучшим способом сделать это? Нужно ли перезагрузить массив в следующей операции, а затем передать позицию в качестве аргумента в намерение?

(Перезагрузка списка будет дорогой, но она должна работать, если БД не изменилась с момента загрузки, в противном случае порядок может отличаться и может отображаться неправильный элемент).

2 ответа

Решение

В Android

Используемый ParecleObjectесли у вас есть Custom Object ArrayList и если у вас есть простой String ArrayList тогда перейдите прямо в Intent

Если у вас есть простой String ArrayList затем обратитесь ниже

Передача ArrayList массивов строк от одного действия к другому в Android

и если у вас есть Custom Object ArrayList затем обратитесь ниже

Как передать ArrayList из одного действия в другое?

Передача массива объектов между действиями

Учитывая ваш список типов отдела здесь:

public class Department implements Parcelable {
    int department_id;
    String title;

    public Department() {
        this.department_id = 0;
        this.title = null;
    }

    public Department(int department_id, String title) {
        this.department_id = department_id;
        this.title = title;
    }

    public int getDepartmentId() {
        return department_id;
    }

    public void setDepartmentId(int department_id) {
        this.department_id = department_id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int flag) {
        parcel.writeInt(department_id);
        parcel.writeString(title);
    }

    public static final Creator<Department> CREATOR = new Creator<Department>(){

        @Override
        public Department createFromParcel(Parcel parcel) {
            Department department = new Department();
            department.setDepartmentId(parcel.readInt());
            department.setTitle(parcel.readString());
            return department;
        }

        @Override
        public Department[] newArray(int size) {

            return new Department[size];
        }

    };
}

List<Department> departments = new ArrayList<>();

Теперь вы просто должны поместить этот список в Intent Bundle следующим образом

bundle.putParcelableArrayList("Departments_KEY", departments);

и получить список в вашей детской деятельности, как это

List<Department> departments = getIntent() or getArguments().getParcelable("Departments_KEY");
Другие вопросы по тегам