state_activatedの罠

 Android進捗。
 粗方やりたい所は組めたと思うけど、若干気になる点があるので確認中。

 しかし今回は妙なところで嵌ってしまった。実働的には大したことはないけど気分的に。
 ListViewで選択行に色付けをするだけの簡単なお仕事を5分くらいで済まそうと思ったら、何だかさっぱり動かない。それというのも、自分はAndroidでUI周りを弄り始めたのは主にタブレットからなので当たり前のように使ってしまっていたけれど、state_activatedってHC(v3)からの機能なのね。
 しかもこれは今思えばなるほど馬鹿な話だけれど、プロジェクトのplatformのjarはICS(v4.0)に切り替えていたけどtargetSdkVersionを指定していなかったので、minSdkVersionに指定したGB(v2.3)に引っ張られて下位互換モードで動いていたという。だから旧OSでもエラーにならないしかといって新OSでも動作しないしで、一体どいうことかと実に無駄な時間を過ごしてしまった。はははのは。

 でまぁstate_activatedが使えないならstate_checkedを使えばいいじゃない、と思ったのだけれどこれまたさっぱり動かない。ListView自体はcheck状態を保持出来ているけれど、各行のviewでstateが取れない。
 どうやらstate_checkedを使うには各行のviewにCheckableを実装し、自分でcheck状態を保持して、尚かつdrawableStateにstate_checkedをマージせよと参考。分かってしまえば成る程ではあるけれど、こんな単純な処理でも実に原始的なことをやらされるのだなぁと。しかも公式サンプルだとstateの処理はサボっているから分からないし(何だかな)。
 まぁこれを見かねてactivateが追加された訳で、ラクになったよね良かったねということなのですが。ただ新OSでしか動かないので、v2がまだシェアの大半を占める現状では結局古い実装方式を取るしかない。他にもv3やv4で扱いやすくなったものは結構あって、こういうのを見る度にさっさとv2も駆逐されてしまえと思ってしまう。
 それに、こういった変遷を知らないと、webサイトで情報を集めても何処か話が噛み合わなかったりすることが多くて、特に今はv2以前の情報が大半を占めるからかなり困る。googleが短期間でころころ変えすぎなんじゃないかとも思うけれど、過渡期はこんなものなのかなぁ。

 まぁそんなバージョン問題のゴタゴタなんぞより、リストのスクロールが酷くカクカクなもんで、あれやこれやと手を入れてやっと標準プレーヤと同等の自然なスクロールになったよ、などとやっている方が実に建設的且つ健康的で良いやね。