带视图寻呼机的Android MVP

时间:2018-02-22 07:37:33

标签: android android-viewpager mvp android-mvp

我正在尝试在我的android项目中实现MVP。但是当我用viewPagerAdapter实现MVP时,我遇到了困难。为了实现MVP,我们习惯在Activity class.Fragment / view和presenter中创建片段/视图和演示者实例,两者将使用契约相互通信。通过这种方式,我们将视图与演示者分离,并使用单元测试覆盖所有业务逻辑。但是如果我们tablayoutactivity。我们在fragmentPagerAdapter内发起了片段。我不确定,如何为其相应的演示者提供制表符片段/视图引用。如果我在fragmentPagerAdapter内初始化将导致SRP(单一责任主体)的演示者。如果我们在Fragment内创建可生成耦合代码的presenter实例,那么我们就不需要联系来建立片段和演示者之间的通信。请提供体系结构解决方案,以便我可以使用视图寻呼机实现相同的MVP并同时遵守所有干净的代码主体。

作为参考,请在下面找到我的适配器代码,我正在为标签初始化片段:

  @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                return getConfigurationsTabFragment();
            case 1:
                return UpdateTabFragment.newInstance();
            case 2:
                return ServiceTabFragment.newInstance();
            default:
                return null;
        }
    }  

2 个答案:

答案 0 :(得分:1)

.

在活动中使用它:

private class MyAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }
        public void addFragement(Fragment fragment){
            mFragmentList.add(fragment);
        }
    }

答案 1 :(得分:0)

将演示者注入到视图寻呼机适配器是不够的。

如果活动被杀死并重新创建,则将还原视图分页器中的片段,但不会还原演示者。

U将需要通过重复访问片段管理器中的片段并将其附加到演示者上,从而再次附加演示者(这有点怪异)。

  Fragment fragment = getChildFragmentManager().findFragmentByTag("android:switcher:" 
  + mViewPager.getId() + ":" + {*position*});
    ((YourFragment)fragment).setPresenter(presenter)