ViewPagerを使用すると、onPageSelectedリスナーは、同じ問題の最初のページではthisと呼ばれることはありません。ViewPager onPage最初のページに選択しました
私は現在選択されているページのためのいくつかのより高価なUI要素を移入し、ページが変更されたとき、この作品いくつかのロジックを持っていますが、it doesn't work for the first page.
私は、リスナーの後に現在の項目を設定した場合、コールバックがためにトリガーされます最初のページが、ビューはまだ初期化されていないので、私はそれを操作することはできません:PagerAdapter.instantiateItem
がまだ実行されていないので、ここで
// Inside PagerAdapter.instantiateItem
ViewHolder vh = new ViewHolder();
cursor.moveToPosition(position);
vh.view = adapter.newView(context, cursor, null);
// Set position as tag so we can retrieve it with findViewByTag
vh.view.setTag(position);
((ViewPager) collection).addView(vh.view,0);
return vh;
// Inside MyActivity.onCreate
pagerAdapter = new SingleMessagePagerAdapter(this, cursor);
pager = (ViewPager)findViewById(R.id.message_pager);
pager.setAdapter(pagerAdapter);
pager.setOnPageSelectedListener(this);
pager.setCurrentItem(selectedItem);
// Inside MyActivity.onPageSelected
// Retrieve tagged view
View view = pager.findViewWithTag(position);
view
はヌルなってしまいます。だから私は自分の質問は、ビューライフサイクルのどの時点で、私はViewPagerがビューを初期化したことを確信できますか?私はActivity.onAttachedToWindow
とActivity.onResume
の中でこれをやろうとしましたが、どちらもPagerAdapter.instantiateItem
の前に解雇されているようです。
これは動作するはずですが、どのような場合は、数事前に定義されていないページのリストをスクロールする必要がありますか?ウェブから取り出されたアイテムのリストのように、それぞれのアイテムがこれらのページャにそれぞれ表示される必要がありますか? –
FragmentPagerAdapterのgetCount()を動的に定義するか、ViewPagerでenableループを試してみてください!! – SSKahani