Android mvvm的基本使用

本文介绍了Android中MVVM架构的使用,包括ViewModel的生命周期特性,它作为视图和模型之间的桥梁,即使设备旋转也不会销毁。LiveData作为数据存储的抽象类,通常与MutableLiveData配合,确保数据更新到UI。同时,DataBinding框架被用来紧密连接ViewModel与用户界面,简化开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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<User>() {
             {@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&lt;User&gt; userLiveData = new MutableLiveData&lt;&gt;();
 
      public LiveData&lt;User&gt; 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);
      }
  }
<layout>
    <data>
        <variable
                name="userModel"
                type="com.xxxx.xxx.userModel"
                />
    </data>

    <viewGroup>
        <TextView>
           android:text="@{userModel.userLiveData}" // 单向数据
        </TextView>

        <EditText>
           android:text="@={userModel.userLiveData}" // 双向数据
        </EditText>

        <Button>
           android:onClick="@{()->userModel.userModel()}" // 点击事件
        </Button>

        
    </viewGroup>
<layout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值