お世話になっております。
標題ついて、instantiateItem()がどういったタイミングで働いているのかが分かりません。
PagerAdapterを継承したAdapterを下記のように実装しました。
lang
1private class MyPagerAdapter extends PagerAdapter { 2 3 LayoutInflater inflater = null; 4 5 //コンストラクタ 6 private MyPagerAdapter(Context context) { 7 super(); 8 inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 9 } 10 11 public int getCount(){ 12 return NUM_OF_VIEWS; 13 } 14 15 16 @Override 17 public Object instantiateItem(ViewGroup container, int position){ 18 19 LinearLayout mLayout = (LinearLayout)inflater.inflate(R.layout.monthly_cal, null); 20 21 /*生成したLayoutに対する処理*/ 22 23 container.addView(linearLayout); 24 return mLayout; 25 } 26 27 @Override 28 public void destroyItem(ViewGroup container, int position, Object object) { 29 ((ViewPager)container).removeView((View)object); 30 } 31 32 @Override 33 public boolean isViewFromObject(View view, Object object) { 34 return view.equals(object); 35 } 36 } 37 38}
MainActivityでこれをnewし、ViewPagerに格納して
きちんとNUM_OF_VIEWSの数だけページの生成には成功しています。
しかし、その中のinstantiateItem()がどのタイミングで動いているのかが分かりません。
newをしているので、Adapterのコンストラクタになっていたり、
lang
1MyPagerAdapter mAdapter = new MyPagerAdapter(this); 2LinearLayout ll = mAdapter.instantiateItem(container, position);
で呼ばれるといった形であれば理解できるのですが...
おそらく、このメソッドに限ったことではないと思うのですが
何故new&setAdapterしただけでViewが生成されるのか教えていただきたいです。
かなり初歩的なことかもしれませんが、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/31 02:55