gitextract_gppaw7p9/ ├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── UpdateLog.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── goldze/ │ │ └── mvvmhabit/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── goldze/ │ │ │ └── mvvmhabit/ │ │ │ ├── app/ │ │ │ │ ├── AppApplication.java │ │ │ │ ├── AppViewModelFactory.java │ │ │ │ └── Injection.java │ │ │ ├── binding/ │ │ │ │ └── twinklingrefreshlayout/ │ │ │ │ └── ViewAdapter.java │ │ │ ├── data/ │ │ │ │ ├── DemoRepository.java │ │ │ │ └── source/ │ │ │ │ ├── HttpDataSource.java │ │ │ │ ├── LocalDataSource.java │ │ │ │ ├── http/ │ │ │ │ │ ├── HttpDataSourceImpl.java │ │ │ │ │ └── service/ │ │ │ │ │ └── DemoApiService.java │ │ │ │ └── local/ │ │ │ │ └── LocalDataSourceImpl.java │ │ │ ├── entity/ │ │ │ │ ├── DemoEntity.java │ │ │ │ ├── FormEntity.java │ │ │ │ └── SpinnerItemData.java │ │ │ ├── ui/ │ │ │ │ ├── base/ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ └── BaseFragmentPagerAdapter.java │ │ │ │ │ ├── fragment/ │ │ │ │ │ │ └── BasePagerFragment.java │ │ │ │ │ └── viewmodel/ │ │ │ │ │ └── ToolbarViewModel.java │ │ │ │ ├── form/ │ │ │ │ │ ├── FormFragment.java │ │ │ │ │ └── FormViewModel.java │ │ │ │ ├── login/ │ │ │ │ │ ├── LoginActivity.java │ │ │ │ │ └── LoginViewModel.java │ │ │ │ ├── main/ │ │ │ │ │ ├── DemoActivity.java │ │ │ │ │ └── DemoViewModel.java │ │ │ │ ├── network/ │ │ │ │ │ ├── NetWorkFragment.java │ │ │ │ │ ├── NetWorkItemViewModel.java │ │ │ │ │ ├── NetWorkViewModel.java │ │ │ │ │ └── detail/ │ │ │ │ │ ├── DetailFragment.java │ │ │ │ │ └── DetailViewModel.java │ │ │ │ ├── rv_multi/ │ │ │ │ │ ├── MultiRecycleHeadViewModel.java │ │ │ │ │ ├── MultiRecycleLeftItemViewModel.java │ │ │ │ │ ├── MultiRecycleRightItemViewModel.java │ │ │ │ │ ├── MultiRecycleViewFragment.java │ │ │ │ │ └── MultiRecycleViewModel.java │ │ │ │ ├── tab_bar/ │ │ │ │ │ ├── activity/ │ │ │ │ │ │ └── TabBarActivity.java │ │ │ │ │ └── fragment/ │ │ │ │ │ ├── TabBar1Fragment.java │ │ │ │ │ ├── TabBar2Fragment.java │ │ │ │ │ ├── TabBar3Fragment.java │ │ │ │ │ └── TabBar4Fragment.java │ │ │ │ ├── viewpager/ │ │ │ │ │ ├── activity/ │ │ │ │ │ │ └── ViewPagerActivity.java │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ └── ViewPagerBindingAdapter.java │ │ │ │ │ └── vm/ │ │ │ │ │ ├── ViewPagerItemViewModel.java │ │ │ │ │ └── ViewPagerViewModel.java │ │ │ │ └── vp_frg/ │ │ │ │ └── ViewPagerGroupFragment.java │ │ │ └── utils/ │ │ │ ├── HttpsUtils.java │ │ │ └── RetrofitClient.java │ │ └── res/ │ │ ├── drawable/ │ │ │ └── login_clear_input.xml │ │ ├── layout/ │ │ │ ├── activity_demo.xml │ │ │ ├── activity_login.xml │ │ │ ├── activity_tab_bar.xml │ │ │ ├── fragment_base_pager.xml │ │ │ ├── fragment_detail.xml │ │ │ ├── fragment_form.xml │ │ │ ├── fragment_multi_rv.xml │ │ │ ├── fragment_network.xml │ │ │ ├── fragment_tab_bar_1.xml │ │ │ ├── fragment_tab_bar_2.xml │ │ │ ├── fragment_tab_bar_3.xml │ │ │ ├── fragment_tab_bar_4.xml │ │ │ ├── fragment_viewpager.xml │ │ │ ├── item_multi_head.xml │ │ │ ├── item_multi_rv_left.xml │ │ │ ├── item_multi_rv_right.xml │ │ │ ├── item_network.xml │ │ │ ├── item_viewpager.xml │ │ │ └── layout_toolbar.xml │ │ ├── values/ │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── xml/ │ │ └── network_security_config.xml │ └── test/ │ └── java/ │ └── com/ │ └── goldze/ │ └── mvvmhabit/ │ └── ExampleUnitTest.java ├── build.gradle ├── config.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── mvvmhabit/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── me/ │ │ └── goldze/ │ │ └── mvvmhabit/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── me/ │ │ │ └── goldze/ │ │ │ └── mvvmhabit/ │ │ │ ├── base/ │ │ │ │ ├── AppManager.java │ │ │ │ ├── BaseActivity.java │ │ │ │ ├── BaseApplication.java │ │ │ │ ├── BaseFragment.java │ │ │ │ ├── BaseModel.java │ │ │ │ ├── BaseViewModel.java │ │ │ │ ├── ContainerActivity.java │ │ │ │ ├── IBaseView.java │ │ │ │ ├── IBaseViewModel.java │ │ │ │ ├── IModel.java │ │ │ │ ├── ItemViewModel.java │ │ │ │ ├── MultiItemViewModel.java │ │ │ │ └── ViewModelFactory.java │ │ │ ├── binding/ │ │ │ │ ├── command/ │ │ │ │ │ ├── BindingAction.java │ │ │ │ │ ├── BindingCommand.java │ │ │ │ │ ├── BindingConsumer.java │ │ │ │ │ ├── BindingFunction.java │ │ │ │ │ └── ResponseCommand.java │ │ │ │ └── viewadapter/ │ │ │ │ ├── checkbox/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── edittext/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── image/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── listview/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── mswitch/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── radiogroup/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── recyclerview/ │ │ │ │ │ ├── DividerLine.java │ │ │ │ │ ├── LayoutManagers.java │ │ │ │ │ ├── LineManagers.java │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── scrollview/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── spinner/ │ │ │ │ │ ├── IKeyAndValue.java │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── swiperefresh/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── view/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── viewgroup/ │ │ │ │ │ ├── IBindingItemViewModel.java │ │ │ │ │ └── ViewAdapter.java │ │ │ │ ├── viewpager/ │ │ │ │ │ └── ViewAdapter.java │ │ │ │ └── webview/ │ │ │ │ └── ViewAdapter.java │ │ │ ├── bus/ │ │ │ │ ├── Messenger.java │ │ │ │ ├── RxBus.java │ │ │ │ ├── RxBusSubscriber.java │ │ │ │ ├── RxSubscriptions.java │ │ │ │ ├── WeakAction.java │ │ │ │ └── event/ │ │ │ │ ├── SingleLiveEvent.java │ │ │ │ └── SnackbarMessage.java │ │ │ ├── crash/ │ │ │ │ ├── CaocConfig.java │ │ │ │ ├── CaocInitProvider.java │ │ │ │ ├── CustomActivityOnCrash.java │ │ │ │ └── DefaultErrorActivity.java │ │ │ ├── http/ │ │ │ │ ├── ApiDisposableObserver.java │ │ │ │ ├── BaseResponse.java │ │ │ │ ├── DownLoadManager.java │ │ │ │ ├── ExceptionHandle.java │ │ │ │ ├── NetworkUtil.java │ │ │ │ ├── ResponseThrowable.java │ │ │ │ ├── cookie/ │ │ │ │ │ ├── CookieJarImpl.java │ │ │ │ │ └── store/ │ │ │ │ │ ├── CookieStore.java │ │ │ │ │ ├── MemoryCookieStore.java │ │ │ │ │ ├── PersistentCookieStore.java │ │ │ │ │ └── SerializableHttpCookie.java │ │ │ │ ├── download/ │ │ │ │ │ ├── DownLoadStateBean.java │ │ │ │ │ ├── DownLoadSubscriber.java │ │ │ │ │ ├── ProgressCallBack.java │ │ │ │ │ └── ProgressResponseBody.java │ │ │ │ └── interceptor/ │ │ │ │ ├── BaseInterceptor.java │ │ │ │ ├── CacheInterceptor.java │ │ │ │ ├── ProgressInterceptor.java │ │ │ │ └── logging/ │ │ │ │ ├── I.java │ │ │ │ ├── Level.java │ │ │ │ ├── Logger.java │ │ │ │ ├── LoggingInterceptor.java │ │ │ │ └── Printer.java │ │ │ ├── utils/ │ │ │ │ ├── CloseUtils.java │ │ │ │ ├── ConvertUtils.java │ │ │ │ ├── ImageUtils.java │ │ │ │ ├── KLog.java │ │ │ │ ├── MaterialDialogUtils.java │ │ │ │ ├── RegexUtils.java │ │ │ │ ├── RxUtils.java │ │ │ │ ├── SDCardUtils.java │ │ │ │ ├── SPUtils.java │ │ │ │ ├── StringUtils.java │ │ │ │ ├── ToastUtils.java │ │ │ │ ├── Utils.java │ │ │ │ ├── compression/ │ │ │ │ │ ├── Luban.java │ │ │ │ │ ├── OnCompressListener.java │ │ │ │ │ └── Preconditions.java │ │ │ │ └── constant/ │ │ │ │ ├── MemoryConstants.java │ │ │ │ ├── RegexConstants.java │ │ │ │ └── TimeConstants.java │ │ │ └── widget/ │ │ │ └── ControlDistributeLinearLayout.java │ │ └── res/ │ │ ├── layout/ │ │ │ ├── activity_container.xml │ │ │ └── customactivityoncrash_default_error_activity.xml │ │ └── values/ │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ └── strings.xml │ └── test/ │ └── java/ │ └── me/ │ └── goldze/ │ └── mvvmhabit/ │ └── ExampleUnitTest.java └── settings.gradle