夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

Parcelable

Androidで独自クラスでデータ管理する方法見つけた~

ドキュメント豊富なんであんまり説明はしませんが…






とりあえず今作ってるアプリでサンプルコードとします。



package jp.touyoubuntu.materica;

import android.os.Parcel;
import android.os.Parcelable;

public class MatData implements Parcelable {
private String name;
private int amt;
private boolean[] iscons;

@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flag) {
out.writeString(name);
out.writeInt(amt);
out.writeBooleanArray(iscons);
}
public static final Parcelable.Creator CREATOR
= new Parcelable.Creator() {
public MatData createFromParcel(Parcel in) {
return new MatData(in);
}

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

private MatData(Parcel in) {
name = in.readString();
amt = in.readInt();
in.readBooleanArray(iscons);
}

public MatData(String name, int amt, boolean[] iscons) {
this.name = name;
this.amt = amt;
this.iscons = iscons;
}
}
これがとりあえずC++の構造体的な役割をもつ、んで
package jp.touyoubuntu.materica;

import java.util.ArrayList;

import android.os.Parcel;
import android.os.Parcelable;

public class AllMatData implements Parcelable {

private ArrayList matList;

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

@Override
public void writeToParcel(Parcel out, int flag) {
out.writeTypedList(matList);
}

public static final Parcelable.Creator CREATOR
= new Parcelable.Creator() {
public AllMatData createFromParcel(Parcel in) {
return new AllMatData(in);
}

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

private AllMatData(Parcel in) {
matList = in.createTypedArrayList(MatData.CREATOR);
}
public AllMatData(ArrayList matList) {
this.matList = matList;
}
}
これで上記のクラスのデータを配列で管理します。
あとは外部クラスでtxtとかにデータセーブしてごにょごにょって感じかな。


これ知ったことで大分このアプリも実現可能になってきた感じ。


あ、詳細はまぁ一応学校の宿題の一貫として作ってるので作り終えてから発表します。

余裕があったらアプリ甲子園に応募するかもしれない

追記:クラス名のせいで表示バグってるかも?