XSD オブジェクトと Android の Parcelable との間の一種のマッピングを実装しています。オプションの要素(minOccurs = '0' maxOccurs = '1')を含むより複雑なxsd要素がある場合を除いて、すべてうまくいきます。
次の形式で Bean コンストラクターを記述する必要があります。
private Bean (Parcel in) {
super();
this.setId(in.readInd());
this.setComplexData((ComplexClass) in.readParcelable(ComplexClass.class
.getClassLoader()));
this.setComplexData2((ComplexClass2) in.readParcelable(ComplexClass2.class
.getClassLoader()));
}
ただし、両方の複雑なデータはオプションです。
オプションのデータが 1 つしかないときは、以下を使用していました。
if(in.dataAvail() >0)
this.setComplexData((ComplexClass) in.readParcelable(ComplexClass.class
.getClassLoader()));
しかし、両方がオプションの場合、私はそれを行うことができません。したがって、パーセルブル内のオブジェクトを特定する方法、クラスの署名を確認する何らかの方法があるかどうか疑問に思っていましたか? その意味では、データが ComplexClass1 か 2 かを確認して、読み取りを行うことができました。