hasStableIds の返り値をセット

実際の Android 5(ロリポップ)での動作は

  • ドラッグ中にドラッグしているセルの下にあるセルがアニメーションしてくれない。
  • ドロップした時に移動したセルが元あった場所にセルが表示されない。

という感じ。


最初、デバッガで動作を追いながらなんでアニメーションしないのか探っていたのだけど、とりあえず VISIBLE/INVISIBLE がおかしいっぽいのがわかった(気がした)。
そこまでやって、なんとなくググってみたら…答えが見つかった!

というわけで、StableArrayAdapter の hasStableIds の返り値を API 20 未満と API 20 以上で変えれば問題解決らしい。
実際のコードはこんな感じ。

@Override
public boolean hasStableIds()
{
    return android.os.Build.VERSION.SDK_INT < 20;
}

これは DynamicListView の方だけど、DynamicGrid の方も同じ。
AbstractDynamicGridAdapter の hasStableIds を修正すれば問題は解決する。