ViewPager天生會(huì)加載左右兩側(cè)的頁(yè)面章喉,這是通過一個(gè)叫做DEFAULT_OFFSCREEN_PAGES的屬性指定的嗅骄,通過setOffscreenPageLimit(int)可以指定這個(gè)屬性的值白粉。
當(dāng)我們把ViewPager改成自己的LazyViewPager之后念祭,就不能與TabLayout綁定了空猜,因?yàn)門abLayout只能與ViewPager對(duì)象綁定末盔,這樣就很尷尬能解決預(yù)加載問題功偿,卻不能解決綁定問題盆佣,說明這樣也行不通了,那就只能把解決辦法放到Fragment上了。Fragment的生命周期中共耍,我們一般在onCreateView方法初始化視圖虑灰,onActivityCreated方法初始化數(shù)據(jù),正常創(chuàng)建Fragment對(duì)象后就會(huì)去加載視圖和數(shù)據(jù)痹兜,需要我們這里需要控制加載數(shù)據(jù)的時(shí)機(jī)穆咐。
實(shí)現(xiàn)方式主要有兩種,一是在頁(yè)面選中后才去加載數(shù)據(jù)字旭,
二是當(dāng)Fragment可見了才去加載數(shù)
通過setUserVisibleHint和getUserVisibleHint方法來設(shè)置和獲取Fragment的顯示狀態(tài)对湃,當(dāng)顯示了才去加載數(shù)據(jù)。
if (getUserVisibleHint()) {
isVisible = true;
lazyLoad();
} else {
isVisible = false;
onInvisible();
}