亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android用MVP實現(xiàn)一個簡單的類淘寶訂單頁面的示例

 更新時間:2017年11月14日 11:17:06   作者:小之丶  
本篇文章主要介紹了Android用MVP實現(xiàn)一個簡單的類淘寶訂單頁面的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

MVP(Model-View-Presenter) 是總所周知MVC模式的一個演變,他們的主要目的都是劃分模塊職責(zé),降低模塊耦合,易測試,提高代碼復(fù)用,網(wǎng)上有很多相關(guān)的知識,這里僅是個人看法。

1、層級

Model:負(fù)責(zé)數(shù)據(jù)相關(guān)的操作

View:負(fù)責(zé)UI的繪制和用戶的交互

Presenter:作為Model和View的中間協(xié)調(diào)部分,負(fù)責(zé)兩者之間的業(yè)務(wù)邏輯處理

2、MVP的優(yōu)缺點

優(yōu)點:降低耦合,層級職責(zé)更明顯,易于單元測試

缺點:造成類數(shù)量增多,在某些場景下presenter的復(fù)用會產(chǎn)生接口冗余

這幾天把以前項目上做過的一個類似淘寶訂單的頁面單獨提取出來重新做了一遍,把一些公共代碼提取出來,方便以后用到類似界面簡易集成,同時也用到了MVP框架,通過MVP之間各層次互相綁定的最基礎(chǔ)的類,將數(shù)據(jù)和邏輯分離開,這是效果圖

值得一提的是,這里用到了一些其他開源代碼,比如刷新樣式swipetoloadlayout等,具體的使用方法大家可以百度搜下名字就行了,資料很多。

4個Fragment用的統(tǒng)一的靜態(tài)構(gòu)建方法,配合ViewPager和TabLayout進(jìn)行一次性集成

//統(tǒng)一的Fragment構(gòu)建方法
  public static MerchandiseListBaseFragment newInstance(int flag) {
    Bundle args = new Bundle();
    //type代表頁簽,0:全部訂單 1:待發(fā)貨 2:待收貨 3:已完成
    args.putString("type", String.valueOf(flag));
    MerchandiseListBaseFragment fragment = new MerchandiseListBaseFragment();
    fragment.setArguments(args);
    return fragment;
  }
  /**
   * 初始化ViewPager
   */
  private void initViewPager() {
    final ArrayList<Fragment> fragmentList = new ArrayList<>();
    MerchandiseListBaseFragment merchandiseListAll = MerchandiseListBaseFragment.
        newInstance(0);
    MerchandiseListBaseFragment merchandiseListDisPatch = MerchandiseListBaseFragment.
        newInstance(1);
    MerchandiseListBaseFragment merchandiseListReceive = MerchandiseListBaseFragment.
        newInstance(2);
    MerchandiseListBaseFragment merchandiseListFinish = MerchandiseListBaseFragment.
        newInstance(3);
    MerchandiseListBaseFragment.firstGetData();//初始化數(shù)據(jù)

    //持有fragment對象List
    fragmentList.add(merchandiseListAll);
    fragmentList.add(merchandiseListDisPatch);
    fragmentList.add(merchandiseListReceive);
    fragmentList.add(merchandiseListFinish);

    FragmentPagerAdapter fragmentAdapter = new BaseFragmentAdapter(getSupportFragmentManager(), fragmentList, mTitles);
    viewPager.setAdapter(fragmentAdapter);
    viewPager.setCurrentItem(0);
    viewPager.setOffscreenPageLimit(4);
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

      @Override
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
      }

      @Override
      public void onPageSelected(int position) {
        tabLayout.getTabAt(position).select();
      }

      @Override
      public void onPageScrollStateChanged(int state) {
      }
    });
    tabLayout.setupWithViewPager(viewPager);//將tabLayout和ViewPager綁定
    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
      @Override
      public void onTabSelected(TabLayout.Tab tab) {
        viewPager.setCurrentItem(tab.getPosition());
      }

      @Override
      public void onTabUnselected(TabLayout.Tab tab) {
      }

      @Override
      public void onTabReselected(TabLayout.Tab tab) {
      }
    });
  }

訂單列表是通過RecyclerView和swipetoloadlayout結(jié)合寫的,具體代碼參見源碼(本文底部),因為這里只是提供一個淘寶訂單頁面的制作方法,所以這里的所有bean數(shù)據(jù)都暫時用的本地數(shù)據(jù),沒有添加網(wǎng)絡(luò)框架進(jìn)行數(shù)據(jù)加載,有興趣的同學(xué)可以研究下MVP+RxJava+Okhttp+Retrofit,非常好用。

MVP構(gòu)建通過在view層和presenter層中的attachPre()方法進(jìn)行對象綁定:

  /**
   * MVP綁定
   */
  @Override
  public void attachPre() {
    activity = this;
    // mContext = this;
    mPresenter = TUtil.getT(this, ID_PRESENTER);
    mModel = TUtil.getT(this, ID_MODEL);
    if (mPresenter != null) {
      mPresenter.mContext = this;
    }
    initPresenter();
  }

這里的getT方法是用來得到類的模板參數(shù)的類型的,返回表示此類型實際類型參數(shù)的 Type 實例化對象。這樣就可以獲取view

 public static <T> T getT(Object o, int i) {
    try {
      return ((Class<T>) ((ParameterizedType) (o.getClass()
          .getGenericSuperclass())).getActualTypeArguments()[i])
          .newInstance();
    } catch (InstantiationException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (ClassCastException e) {
      e.printStackTrace();
    }
    return null;
  }

源碼地址:https://github.com/WeaponZhi/MerchandiseList 

以后有機會再研究下網(wǎng)絡(luò)框架和MVP的集成,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • 詳解Android Studio實現(xiàn)用戶登陸界面demo(xml實現(xiàn))

    詳解Android Studio實現(xiàn)用戶登陸界面demo(xml實現(xiàn))

    這篇文章主要介紹了詳解Android Studio實現(xiàn)用戶登陸界面demo,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Android嵌套線性布局玩法坑解決方法

    Android嵌套線性布局玩法坑解決方法

    這篇文章主要為大家介紹了Android嵌套線性布局玩法坑解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • android實現(xiàn)來電靜音示例(監(jiān)聽來電)

    android實現(xiàn)來電靜音示例(監(jiān)聽來電)

    這篇文章主要介紹了手機來電鈴聲響起后,通過此代碼實現(xiàn)靜音而非掛斷的方法的相關(guān)資料
    2014-03-03
  • Android中的廣播和廣播接收器代碼實例

    Android中的廣播和廣播接收器代碼實例

    這篇文章主要介紹了Android中的廣播和廣播接收器代碼實例,本文講解了定義一個廣播接收器、發(fā)送廣播,定義好action標(biāo)志、用Intent發(fā)送、注冊只接收指定action的廣播接收器、取消該廣播接收器等操作代碼實例,需要的朋友可以參考下
    2015-05-05
  • Android Handler機制的工作原理詳析

    Android Handler機制的工作原理詳析

    這篇文章主要給大家介紹了關(guān)于Android Handler機制的工作原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Android自定義processor實現(xiàn)bindView功能的實例

    Android自定義processor實現(xiàn)bindView功能的實例

    下面小編就為大家分享一篇Android自定義processor實現(xiàn)bindView功能的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 基于Android實現(xiàn)百度地圖定位過程詳解

    基于Android實現(xiàn)百度地圖定位過程詳解

    這篇文章主要介紹了基于Android實現(xiàn)百度地圖定位過程詳解,需要的朋友可以參考下
    2015-11-11
  • Android界面設(shè)計(APP設(shè)計趨勢 左側(cè)隱藏菜單右邊顯示content)

    Android界面設(shè)計(APP設(shè)計趨勢 左側(cè)隱藏菜單右邊顯示content)

    這文章講述了2013年未來的移動APP設(shè)計趨勢,感覺挺有道理的:Android界面設(shè)計實現(xiàn)左側(cè)隱藏菜單右邊顯示content,感興趣的你可以了解下啊,希望本文對你的APP設(shè)計提高有所幫助哦
    2013-01-01
  • Android 使用 Scroller 實現(xiàn)平滑滾動功能的示例代碼

    Android 使用 Scroller 實現(xiàn)平滑滾動功能的示例代碼

    這篇文章主要介紹了Android 使用 Scroller 實現(xiàn)平滑滾動功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Android TV 3D卡片無限循環(huán)效果

    Android TV 3D卡片無限循環(huán)效果

    這篇文章主要為大家詳細(xì)介紹了Android TV 3D卡片無限循環(huán)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論