Welcome to touyou note!!

こんにちは。touyouです。touyou noteは、creativeな人間を志すちっぽけな学生が様々なことに体当たりするブログです。
どうぞお楽しみ下さい。

Twitter: @touyoubuntu
HomePage: TOUYOUBUNTU

検索用ワード

PC Linux Windows Cygwin Android Python Java C/C++ C# HTML Processing Lisp Perl Arduino Japanino Unity Google TopCorder Codeforces Vim Emacs Github PSP Gundam Soccer Mobile Dialy Study Music ...

2012年8月14日火曜日

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とかにデータセーブしてごにょごにょって感じかな。


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


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

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

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

0 件のコメント:

コメントを投稿