# BaseVMFragment
BaseVMFragment继承于BaseFragment,适用于和ViewModel绑定的页面使用。
## 具体使用(案例)
1、新建xml布局
```xml
```
2、新建ViewModel页面
```kotlin
class HomeViewModel : BaseViewModel() {
}
```
3、新建Fragment页面
```kotlin
class HomeFragment : BaseVMFragment(R.layout.fragment_home) {
override fun initVMData() {
//初始化数据
}
}
```
两种继承方式上,大部分方法都是通用的,在使用ViewModel的时候,有几个比较特殊的方法需要简单介绍一下。
监听ViewModel数据改变
需要重写observeLiveData方法。
```kotlin
override fun observeLiveData() {
super.observeLiveData()
}
```
**获取绑定的xml variable。当xml和ViewModel绑定时,需要重写这个方法,传递BR**
```kotlin
override fun getVariableId(): Int {
return super.getVariableId()
}
```
各种状态逻辑处理
主要包含dialog的加载和隐藏,数据的相关处理等,可以对以下在子类中进行重写。
```kotlin
/**
* AUTHOR:AbnerMing
* INTRODUCE:dialog加载
*/
open fun dialogLoading() {}
/**
* AUTHOR:AbnerMing
* INTRODUCE:dialog隐藏
*/
open fun dialogDismiss() {}
/**
* AUTHOR:AbnerMing
* INTRODUCE:数据错误
*/
open fun dataError() {}
/**
* AUTHOR:AbnerMing
* INTRODUCE:数据为空
*/
open fun dataEmpty() {}
/**
* AUTHOR:AbnerMing
* INTRODUCE:网络错误或请求错误
*/
open fun netError() {}
/**
* AUTHOR:AbnerMing
* INTRODUCE:隐藏某些布局或者缺省页等
*/
open fun hide() {}
```
获取视图
xml中定义好id之后,直接使用mBinding加上对应控件的id即可,比如控件id为tv_name,获取如下:
```kotlin
mBinding.tvName
```
获取ViewModel
在继承BaseVMActivity的时候,需要调用ViewModel里的方法或属性,直接调用mViewModel即可。
```kotlin
mViewModel.doHttp()
```
## License
```
Copyright (C) AbnerMing, VipBase Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```