tablayout+viewpager+fragment懶載入
原文在簡書:https://www.jianshu.com/p/eb81f3692229
我的是縮減版,只有優化,可以去看原版的。
public abstract class PagerFragment extends Fragment implements View.OnClickListener{ protected View rootView; //當前Fragment是否處於可見狀態標誌,防止因ViewPager的快取機制而導致回撥函式的觸發 private boolean isFragmentVisible; //是否是第一次開啟網路載入 public boolean isFirst; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (rootView == null) rootView = inflater.inflate(getLayoutResource(), container, false); // mUnbinder = ButterKnife.bind(this, rootView); initView(rootView); //可見,但是並沒有載入過 if (isFragmentVisible && !isFirst) { onFragmentVisibleChange(true); } return rootView; } //獲取佈局檔案 protected abstract int getLayoutResource(); //初始化view protected abstract void initView(View rootView); @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { isFragmentVisible = true; } if (rootView == null) { return; } //可見,並且沒有載入過 if (!isFirst&&isFragmentVisible) { onFragmentVisibleChange(true); return; } //由可見——>不可見 已經載入過 if (isFragmentVisible) { onFragmentVisibleChange(false); isFragmentVisible = false; } } @Override public void onDestroyView() { super.onDestroyView(); } /** * 當前fragment可見狀態發生變化時會回撥該方法 * 如果當前fragment是第一次載入,等待onCreateView後才會回撥該方法,其它情況回撥時機跟 {@link #setUserVisibleHint(boolean)}一致 * 在該回撥方法中你可以做一些載入資料操作,甚至是控制元件的操作. * * @param isVisible true 不可見 -> 可見 * false 可見 -> 不可見 */ protected void onFragmentVisibleChange(boolean isVisible) { loadData();//載入資料 getclick();//點選事件 } protected abstract void getclick(); protected abstract void loadData(); }
使用就是用fragment繼承,實現抽象方法,viewpager和tablayout正常執行就可以了。
相關文章
- TabLayout+ViewPager+fragment實現懶載入TabLayoutViewpagerFragment
- TabLayout+ViewPager+Fragment懶載入實現TabLayoutViewpagerFragment
- Android tabLayout+viewPager+fragment處理懶載入AndroidTabLayoutViewpagerFragment
- TabLayout+ViewPager+Fragment實現懶載入完全解決方案TabLayoutViewpagerFragment
- Tablayout+Viewpager+Fragment組合使用以及懶載入機制TabLayoutViewpagerFragment
- Android開發丶使用懶載入修復tablayout+viewpager+fragment的預載入AndroidTabLayoutViewpagerFragment
- 懶載入
- 懶載入和預載入
- iOS: 懶載入iOS
- 【譯】懶載入元件元件
- 圖片懶載入
- Vue元件懶載入Vue元件
- Ribbon - 懶載入
- vue路由懶載入Vue路由
- Vue 的懶載入Vue
- Swift中懶載入Swift
- hibernate懶載入
- spring 懶載入Spring
- 什麼是hibernate懶載入?什麼時候用懶載入?為什麼要用懶載入?(轉)
- Vue 路由按需載入(路由懶載入)Vue路由
- 圖片預載入和懶載入
- 前端效能優化 --- 懶載入&預載入前端優化
- 單張圖片懶載入
- 圖片懶載入(IntersectionObserver)Server
- vue(18)路由懶載入Vue路由
- 關於懶載入原理
- 懶載入之intersection observerServer
- 圖片懶載入原理
- Fragment 懶載入實踐Fragment
- 談談IntersectionObserver懶載入Server
- Hibernate 之 懶載入
- TabLayout+ViewPager 懶載入TabLayoutViewpager
- 不要濫用懶載入
- 手把手實現圖片懶載入+封裝vue懶載入元件封裝Vue元件
- 1道面試題---懶載入和預載入面試題
- 圖片懶載入踩坑
- 圖片懶載入大白話
- 圖片懶載入實現