Use Tab layout in MVVM architecture with the data binding library

后端 未结 3 541
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-31 21:48

I am developing an app that has a tab layout as the image.

I’d like to use MVVM architecture with data binding library but I am new with this framework.

3条回答
  •  你的背包
    2021-01-31 22:10

    Here is my solution for setUpWithViewpager using databinding:

        public class BindingUtil
        {
            @BindingAdapter({ "setUpWithViewpager" })
            public static void setUpWithViewpager(final TabLayout tabLayout, ViewPager viewPager)
            {
                viewPager.addOnAdapterChangeListener(new ViewPager.OnAdapterChangeListener()
                {
                    @Override
                    public void onAdapterChanged(@NonNull ViewPager viewPager, @Nullable PagerAdapter oldAdapter, @Nullable PagerAdapter newAdapter)
                    {
                        if (oldAdapter == null && (newAdapter == null || newAdapter.getCount() == 0))
                        {
                            // this function will helpful when 
                            // we don't create viewpager immediately 
                            // when view created (this mean we create
                            // will pager after a period time)
                            return;
                        }
                        tabLayout.setupWithViewPager(viewPager);
                    }
                });
            }
        }
    

    xml

    
    
    
    

    ViewModel

        public class MainViewModel extends BaseObservable
        {
    
            @Bindable
            public PagerAdapter getPagerAdapter()
            {
                return adapter;
            }
    
            private void createViewPagerAdapter()
            {
                ...
                notifyPropertyChanged(BR.pagerAdapter);
            }
        }
    

    full demo project here

    Hope it help

提交回复
热议问题