ぷろぐらむおいしいよ

技術ネタを適当に書いていきます。

ViewPagerでページ番号を取得して何らかの処理を行う

日本語の記事があんまりなかったので書いておきます。
ページが切り替わる度に、ページ番号を取得して何らかの処理を行うコードです。
(用途としては例えば、現在のページ番号をTextViewに表示するとか。
pagerはViewPagerのインスタンスを参照しているものとします。

ソースコード

pager.setOnPageChangeListener(new OnPageChangeListener() {
	@Override
	public void onPageSelected(int position) {
	}

	@Override
	public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

	}

	@Override
	public void onPageScrollStateChanged(int state) {
		if(state == ViewPager.SCROLL_STATE_SETTLING) {
			int page = pager.getCurrentItem();
			/* ここにしたい処理を書く。例えば、
			textView.setText(String.valueOf(page));
			という感じ */
		}
	}
});

要点

  • OnPageChangeListenerというリスナを設定します。
  • スワイプしてページが切り替わるとonPageScrollStateChanged()が呼ばれ、stateにはViewPager.SCROLL_STATE_SETTLINGが入っています。
  • getCurrentItem()を使うと、現在のページを取得することが出来ます。

備考

onPageSelected()で渡されるpositionでは上手く行きませんでした。