implementation project(path: ':framework')
mavenCentral()
maven { url 'https://jitpack.io' }
maven { url 'https://maven.google.com' }
//java1.8支持
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//databinding支持
buildFeatures {
dataBinding = true
}
public class MyApplication extends BaseApplication {
@Override
public void onCreate() {
super.onCreate();
}
/**
* 设置服务器地址集合
*
* @return 服务器地址集
*/
@Override
protected List<String> initBaseUrl() {
List<String> urlList = new ArrayList<>();
urlList.add("http://www.xxx.com");
urlList.add("http://www.yyy.com");
return urlList;
}
}
别忘了在AndroidManifest.xml中添加MyApplication
public interface IDemoNetworkSource {
}
public class DemoNetworkSource extends BaseNetworkSource implements IDemoNetworkSource {
}
public class DemoRepository extends BaseRepository implements IDemoNetworkSource {
private DemoRepository() {
}
public static DemoRepository create() {
return new DemoRepository();
}
}
public class DemoViewModel extends BaseViewModel<DemoRepository> {
public DemoViewModel(DemoRepository repository) {
super(repository);
}
}
public class DemoModelFactory extends ViewModelProvider.NewInstanceFactory {
/**
* 简单工厂模式创建对象
*
* @return 对象
*/
public static DemoModelFactory create() {
return new DemoModelFactory();
}
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
DemoRepository demoRepository = DemoRepository.create()
.setNetworkSource(new DemoNetworkSource());
return CastUtil.cast(new DemoViewModel(demoRepository));
}
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="com.demo.mvvm.viewmodel.DemoViewModel" />
<variable
name="demoViewModel"
type="DemoViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</layout>
public class DemoActivity extends AppBaseActivity<ActivityDemoBinding, DemoViewModel> {
@Override
protected int getLayoutId() {
return R.layout.activity_demo;
}
@Override
protected DemoViewModel getViewModel() {
return createViewModel(DemoViewModel.class, DemoModelFactory.create());
}
@Override
protected SparseArray<Object> getVariableSparseArray() {
SparseArray<Object> variableSA = new SparseArray<>();
variableSA.put(BR.demoViewModel, mViewModel);
return variableSA;
}
}
以上7步完成了一次Activity或Fragment的创建,另外,如果是创建Activity别忘了在AndroidManifest.xml中注册Activity