データバインド

Android SDK上で使うことを前提として、ビュー(レイアウト)とモデルとの間でオブジェクトを交換する処理を書かなくて済むような、なんらかのデータバインドの仕組みを書くことにした。※1
一般的な仕組みを一から考えるのは無駄なので、自分が以前に経験したことのある既存の方式をベースに簡略化されたもので実装することとして、考えてみる。

案)
1. Windows Forms方式
2. Beansbinding方式

両方ともGUIとモデルの双方向のバインドが実現出来るため、用途としてぴったりだが、1.は特定のインタフェース(INotifyPropertyChanged)を使うことをモデルとGUI共に強制するのが使いづらい。特にPOJOのプロパティの変更を検知するためには、いろいろな仕掛けが必要で重くなるので、本格的に実装するのは現時点では適していないだろう。

2.は元々Javaで書かれているので移植が楽だし、1.同様に変更が即座に通知される良さはあるが、EL(Expression Language)とJavaBeansの仕様に依存している(Android SDKjava.beansパッケージをサポートしていない)ので使えなさげだ。

さて、どうしたものか。(書いてから気がついたが、やはり算段しているな。)

※1 Android SDKではAdapterとAdapterViewの派生クラスにより実現されているデータバインド機能があるが、これはJFC/Swingで言うところの"データモデル"であり、データとGUIが密結合しているため、汎用的には使いづらい