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が表示されつづけることがなくなった。やっと前に進める。