Передача списка объектов в PagerActivity
У меня есть список статей, взятых из списка, и я хочу показать выбранную статью в PagerActivity, чтобы пользователь мог легко переходить к статье до и после окончания чтения.
В iOS я могу просто передать список (или ссылку) с объектами статьи в PagerActivity. В Android, однако, вызов Intent не позволяет передавать списки. Так что будет лучшим способом сделать это? Нужно ли перезагрузить массив в следующей операции, а затем передать позицию в качестве аргумента в намерение?
(Перезагрузка списка будет дорогой, но она должна работать, если БД не изменилась с момента загрузки, в противном случае порядок может отличаться и может отображаться неправильный элемент).
2 ответа
В Android
Используемый ParecleObject
если у вас есть Custom Object ArrayList
и если у вас есть простой String ArrayList
тогда перейдите прямо в Intent
Если у вас есть простой String ArrayList
затем обратитесь ниже
Передача ArrayList массивов строк от одного действия к другому в Android
и если у вас есть Custom Object 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");