Android Binding 〜SDカードファイルビュー〜
ちょこちょこ作っていたSDカードファイルビューアですが、とりあえずこんなものが出来ました。
とりあえずというのは、今私が公開しているアプリの機能が実現されていないからです。当初の目的が公開しているアプリを置き換える、というものでしたが、何となく熱意が続かず・・・。
でも最低限の機能は実装したので、Android Bindingのサンプルにはなるかなと。
んで、このサンプルアプリを作っていて感じたこと。
Android Bindingを使うとView (レイアウト定義) をActivityから切り離すことが出来る・・・と思っていましたが、厳密には切り離すことは出来ません。やはりコード上からViewにアクセスする必要があるわけで (たとえば現在表示しているリストの行数を取得したりとか) そうなると
<ListView android:id="@+id/list" ... />
というあの属性が必要になるのです。そして、このid属性を使ってViewにアクセス出来るのはActivityなのです。どうしてもActivityとViewの関係は立ち切れない。まぁ、当たり前と言えば当たり前なんでしょうけど、私にとってはちょっとした失望すら感じてしまいました。
ViewModel側でListのプロパティにアクセスするための処理がいかに分かりにくいことか・・・、これなら素直にActivity内に処理を記述した方が分かりやすいんじゃないの?と思ってしまった次第です。
ちなみに私はViewModelクラス自体にObservableインターフェイスを実装させ、Activity側から監視し、通知されたらリストの表示位置を設定するということをしています。また、ViewModel内でListオブジェクトに間接的にアクセスするようにコンストラクタにリスト表示位置取得用インターフェイスオブジェクトを渡しています。言葉で書くと何が何やら・・・、図にする元気もありません (挑戦しましたが、astah固まりまくり) 。
なので、Android Bindingをいじるのはこの辺にしておこうと思います。まだベータ版なのでバージョンアップで機能の追加や改善などが行われていくと予想されます。気になる方は要チェック!