如何写入Parcelable中两个或多个自定义对象的arraylist?

时间:2017-08-07 15:10:57

标签: android parcelable

我在Stack上浏览过这个问题,但我没有发现任何问题。我有一个类有两个自定义对象的arraylist。我不知道如何为父类实现writeToParcel。我找到的一个选项是readTypedList构造函数,但我不能实现它两次。没有readTypedListArray构造函数,我可以创建一个数组并发送它。

提醒一下,对象是ArrayList,父类中有两个这样的对象。 github链接供参考。

https://github.com/legalimpurity/PopularMoviesStage2/tree/master/app/src/main/java/popularmoviesstage1/legalimpurity/com/popularmoviesstage2/objects

3 个答案:

答案 0 :(得分:3)

您可以使用以下方式添加customArray:

MovieObject课程中:

  @Expose
  private ArrayList< ReviewObject > ReviewObjs = new ArrayList< ReviewObject >();
  private ArrayList< TrailerVideoObject > TrailerVideoObjs = new ArrayList< TrailerVideoObject >();

writeToParcel():

 public void writeToParcel(Parcel dest, int flags) {
        dest.writeTypedList(ReviewObjs);
        dest.writeTypedList(TrailerVideoObjs);
    }

和readFromParcel():

private void readFromParcel(Parcel in) {

    ReviewObjs = new ArrayList<ReviewObject>();
    in.readTypedList(ReviewObjs, ReviewObject.CREATOR);

    TrailerVideoObjs = new ArrayList<TrailerVideoObject>();
    in.readTypedList(TrailerVideoObjs, TrailerVideoObject.CREATOR);

  }

在CustomClasses中添加以下行:

代表ReviewObject

public class ReviewObject implements Parcelable {
    public static final Creator<ReviewObject> CREATOR = new Creator<ReviewObject>() {
        public ReviewObject createFromParcel(Parcel in) {
            return new ReviewObject(in);
        }

        public ReviewObject[] newArray(int size) {
            return new ReviewObject[size];
        }

    };
// add other objects...
}

代表TrailerVideoObject

public class TrailerVideoObject implements Parcelable {
    public static final Creator<TrailerVideoObject> CREATOR = new Creator<TrailerVideoObject() {
        public TrailerVideoObject createFromParcel(Parcel in) {
            return new TrailerVideoObject(in);
        }

        public TrailerVideoObject[] newArray(int size) {
            return new TrailerVideoObject[size];
        }

    };
// add other objects...
}

答案 1 :(得分:0)

def return_var(subject, verb, obj): return "%s %s %s" % (subject, verb, obj) temp = return_var('player', 'tell', 'joke') if 'player tell joke' == temp: print("success") 中,您可以将其声明为str(temp)而不是MovieObject.java

在我的代码中:

List<YOUR_CLASS>

Class1和Class2也实现了Parcelable。 我正在使用Android Studio提供的“自动生成”Parcelable实现。 这是Parcelable实现:

ArrayList<YOUR_CLASS>

答案 2 :(得分:0)

您可以在https://telegram.me/[botname]?startgroup=foo

中尝试以下解决方法
MovieObject.java