ViewPagerでViewを強制的に更新する方法

ViewPagerを使うと、複数のページをすべらせて(スワイプっていうのか?)切り替えるアプリを簡単に作れるらしくて、やり方もTechBooster「スワイプ動作でページ送りする(ViewPager)」で見つけて、実際に簡単にできてて喜んでたんだけど、どうしてもわからなかった点がひとつ。

PagerAdapter経由で一度作成したViewを、強制的に捨ててupdateさせる方法。

累計数時間ハマった末に、やっとうまく行く方法を見つけたのでメモ。
ViewPager PagerAdapter not updating the View
ここのページの途中に載ってた方法を転記。「簡単な方法」と「柔軟で効率が良い方法」が書いてあるけど、後者は意味がよくわかんなかったので簡単な方法のみ。

  • PagerAdapterのgetItemPositionを、以下のとおりOverrideする。

public int getItemPosition(Object object) {
return POSITION_NONE;
}

  • 上記を実施した上で、PagerAdapterのnotifyDataSetChanged()を呼ぶ。

理屈は知らないけど、古いViewが表示されつづけることがなくなった。やっと前に進める。

みっかぼの無料Androidゲームはこちら。