Страницы

Поиск по вопросам

понедельник, 17 декабря 2018 г.

Как передать все значения item в RecycleView?

У меня есть recycleview с данными и мне надо передать все данные items в другое активити,как мне это реализовать?


Ответ

Зачем делать такой костыль как в предыдущем ответе, если любую модель можно сделать сериализуемой (implements Parcelable) и передавать всю модель целиком?
Кладем в intent: intent.putExtra("parcelable", myParcelables.get(position))
Берем из intent: MyParcelable model = getIntent().getParcelableExtra("parcelable")
пример реализации:
public class Country implements Parcelable {
private String code;
private String name;
private String tag;
private int limit;
private String image;
public Country(JSONParser data) { code = data.getString("code"); name = data.getString("value"); tag = data.getString("flag"); image = data.getString("image"); if (data.contains("limit")) { limit = data.getInt("limit") - code.length(); } }
public Country(Parcel in) { code = in.readString(); name = in.readString(); tag = in.readString(); image = in.readString(); limit = in.readInt(); }
public static final Creator CREATOR = new Creator() { @Override public Country createFromParcel(Parcel in) { return new Country(in); }
@Override public Country[] newArray(int size) { return new Country[size]; } };
@Override public int describeContents() { return 0; }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(code); dest.writeString(name); dest.writeString(tag); dest.writeString(image); dest.writeInt(limit); }
public String getClearCode() { return code; }
public String getCode() { return "+" + code; }
public String getName() { return name; }
public String getTag() { return tag; }
public int getLimit() { return limit; }
public String getImage() { return image; } }
P.S.
Чтобы не словить BadParcelableException при передаче между активностями Parcelable-конструктор должен инициализировать данные в том же порядке, в котором они были записаны в Parcel в методе void writeToParcel(Parcel, int)

Комментариев нет:

Отправить комментарий