项目地址:https://github.com/gms76575/simplearch.git
https://github.com/gms76575/simplearch.git
https://github.com/gms76575/simplearch.git
https://github.com/gms76575/simplearch.git
1.引包:
dependencies.gradle
def archVersion = "1.1.0"
def draggerVersion = "2.0"
project.ext{
dependencies = [
"lifecycle-runtime" : "android.arch.lifecycle:runtime:${archVersion}",
"lifecycle-compiler" : "android.arch.lifecycle:compiler:${archVersion}",
//如果还需要使用 LiveData 和 ViewModel 则需要添加:
"lifecycle-extensions" : "android.arch.lifecycle:extensions:${archVersion}",
//使用 Room 需要添加:
"room-runtime" : "android.arch.persistence.room:runtime:${archVersion}",
"room-compiler" : "android.arch.persistence.room:compiler:${archVersion}",
//测试 Room migrations 添加:
"room-testing" : "android.arch.persistence.room:testing:${archVersion}",
//在 Room 中使用 RxJava 添加:
"room-rxjava" : "android.arch.persistence.room:rxjava2:${archVersion}",
"dagger-compiler": "com.google.dagger:dagger-compiler:${draggerVersion}",
"dagger": "com.google.dagger:dagger:${draggerVersion}"
]
}
module的build.gradle
android {
dataBinding {
enabled = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation rootProject.ext.dependencies["lifecycle-runtime"]
annotationProcessor rootProject.ext.dependencies["lifecycle-compiler"]
//如果还需要使用 LiveData 和 ViewModel 则需要添加:
implementation rootProject.ext.dependencies["lifecycle-extensions"]
//使用 Room 需要添加:
implementation rootProject.ext.dependencies["room-runtime"]
annotationProcessor rootProject.ext.dependencies["room-compiler"]
//测试 Room migrations 添加:
testImplementation rootProject.ext.dependencies["room-testing"]
implementation rootProject.ext.dependencies["dagger"]
annotationProcessor rootProject.ext.dependencies["dagger-compiler"]
}
2.ViewModel
@Entity
public class User
{
@NonNull
@PrimaryKey
@ColumnInfo(name = "user_id")
private String userId;
@ColumnInfo(name = "user_name")
private String userName;
private int sex;
@ColumnInfo(name = "update_date")
private String updateDate;
private String phone;
...
}
public class MyViewModel extends ViewModel
{
private MutableLiveData<User> user;
public LiveData<User> getUser() {
if (user == null) {
user = new MutableLiveData<>();
loadUsers();
}
return user;
}
private void loadUsers() {
ExecutorServiceManager.getInstance().execute(()->
{
try
{
Thread.sleep(5000L);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
user.postValue(new User("12345", "gengmingshan", "110", 1, "2018-06-06 15:02:00"));
});
}
}
3.View
public class MainActivity extends AppCompatActivity
{
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
model.getUser().observe(this, user -> binding.setUser(user));
}
}
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="user"
type="com.gengms.simplearch.User"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView android:id="@+id/tv_user_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.userId}"/>
<TextView android:id="@+id/tv_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.userName}"/>
<TextView android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.phone}"/>
</LinearLayout>