Android mvvmの基本使用

2366 ワード

1,viewModeはviewとmodelの中間層であり、ライフサイクルがあり、画面を切り替えてもdestroyは使用されない
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}" //