Android mvvmの基本使用
2366 ワード
1,viewModeはviewとmodelの中間層であり、ライフサイクルがあり、画面を切り替えてもdestroyは使用されない
2 liveDataはviewModelデータを格納するための抽象クラスであり、彼のサブクラスはMutableLiveDataであり、一般的に両者を組み合わせて使用されている.
2,dataBindingはviewModelとuiを組み合わせたgoogleの公式フレームワークです
eg:
2 liveDataはviewModelデータを格納するための抽象クラスであり、彼のサブクラスはMutableLiveDataであり、一般的に両者を組み合わせて使用されている.
2,dataBindingはviewModelとuiを組み合わせたgoogleの公式フレームワークです
eg:
build.gradle
dataBinding{
enabled = true
}
public class UserActivity extends Activity {
{@literal @}Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_activity_layout);
final UserModel viewModel = ViewModelProviders.of(this).get(UserModel.class);
viewModel.userLiveData.observer(this, new Observer() {
{@literal @}Override
public void onChanged(@Nullable User data) {
// update ui.
}
});
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
{@literal @}Override
public void onClick(View v) {
viewModel.doAction();
}
});
}
}
public class UserModel extends ViewModel {
private final MutableLiveData<User> userLiveData = new MutableLiveData<>();
public LiveData<User> getUser() {
return userLiveData;
}
public UserModel() {
// trigger user load.
}
void doAction() {
// depending on the action, do necessary business logic calls and update the
// userLiveData.
}
}
public class MyFragment extends Fragment {
public void onStart() {
UserModel userModel = ViewModelProviders.of(getActivity()).get(UserModel.class);
}
}
android:text="@{userModel.userLiveData}" //
android:text="@={userModel.userLiveData}" //