ArrayList в Bundle

Рейтинг: 2Ответов: 2Опубликовано: 09.10.2014

Добрый день. Существует ArrayList вида

ArrayList<People> people = new ArrayList<People>();

Нужно через Bundle передать этот типизированный массив в Fragment1. Как это сделать? И как принять такой массив во Fragment1? Сама суть передачи данных между Activity и Fragment ясна:

Fragment1 f = new Fragment1();
Bundle args = new Bundle();
// Но это не число и не строка) ArrayList<People> people
args.putInt("index", index);
f.setArguments(args);
return f;

Заранее благодарен.

Ответы

▲ 3Принят
public class People implements Parcelable {

    private String firstName;
    private String lastName;
    private int age;

    //setters and getters
    ...

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

    private People (Parcel in) {
        setFirstName(in.readString());
        setLastName(in.readString());

        setAge(in.readInt());
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(getFirstName);
        dest.writeString(getLastName);

        dest.writeInt(getAge);
    }

    public static final Parcelable.Creator<People> CREATOR = new Parcelable.Creator<People >() {

        @Override
        public People createFromParcel(Parcel source) {
            return new People (source);
        }

        @Override
        public People[] newArray(int size) {
            return new People[size];
        }
    };
}

ArrayList<People> people;  
Bundle args = new Bundle();
args.putParcelableArrayList("people", people)
▲ 1

putParcelableArrayList. Для его использования надо реализовать интерфейс Parcelable у вашего класса People.