国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

TabLayout+ViewPager 懶加載

2019-11-09 14:43:23
字體:
來源:轉載
供稿:網友

懶加載框架使用網上開源的:https://github.com/lianghanzhen/LazyViewPager

先看布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/base_title" /> <android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="100px" /> <com.wzb.bd2xl.widget.LazyViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>

activity中的代碼

public class XunLeiManager extends BaseActivity { @BindView(R.id.viewpager) LazyViewPager viewpager; @BindView(R.id.tabLayout) TabLayout tabLayout; PRivate List<String> titles; @Override public void initData() { } @Override public int getLayoutID() { return R.layout.activity_xunleimanager; } @Override public void initView() { tabLayout.setTabMode(TabLayout.MODE_FIXED); titles = Arrays.asList(getResources().getStringArray(R.array.xunlei_mamager)); PagerAdapter xunLeiManagerPagerAdapter = new XunleiFragmentAdapter(getSupportFragmentManager(), titles); viewpager.setAdapter(xunLeiManagerPagerAdapter); tabLayout.setupWithViewPager(viewpager); }}

運行起來效果 此時滑動起來確實是懶加載.點擊 正在加載 已完成 垃圾箱 確實都沒重復加載 但是 重新運行程序起來, 此時先點擊提交失敗 發現日志 打印 把已完成 垃圾箱 功能模塊中的onCreateView方法的日志打印出來了,我當前需要的是當點擊對應的功能之后才執行onCreateView方法,應為我的數據初始化是放在onCreateView里面.而初始化數據可能會涉及到訪問網絡,當用戶未點擊該模塊卻去訪問網絡肯定不行.

那此時 查看tabLayout的點擊事件:

public static class ViewPagerOnTabSelectedListener implements TabLayout.OnTabSelectedListener { private final ViewPager mViewPager; public ViewPagerOnTabSelectedListener(ViewPager viewPager) { mViewPager = viewPager; } @Override public void onTabSelected(TabLayout.Tab tab) { mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { // No-op } @Override public void onTabReselected(TabLayout.Tab tab) { // No-op } }

mViewPager.setCurrentItem(tab.getPosition()); 在調用該方法的時候 假設 有 A,B,C,D四個Fragment 我初始化選中 A 然后設置currentItem為D的時候 也會對BC進行onCreateView進行調用.

猜測是在平滑過渡效果的時候快速的顯示了 BC兩個頁面.. 解決辦法 直接重寫:setOnTabSelectedListener方法得到覺得 只是在從A點到D的時候就底部綠色條是一閃到D的底部 而不是滑動了

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewpager.setCurrentItem(tab.getPosition(),false); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } });
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴山县| 遵化市| 镇巴县| 栾川县| 根河市| 大名县| 奉化市| 凤凰县| 陆良县| 华安县| 饶平县| 名山县| 屏南县| 抚远县| 上高县| 乌鲁木齐县| 长白| 广汉市| 临夏市| 乡宁县| 新干县| 宁陵县| 砀山县| 池州市| 新乐市| 台州市| 北宁市| 神木县| 新田县| 抚州市| 武功县| 安陆市| 司法| 万山特区| 遂昌县| 铜陵市| 格尔木市| 大荔县| 双桥区| 柳河县| 印江|