为什么我们需要 LiveData 和 ViewModel

萨尔曼

我使用过LiveData and ViewModel示例,但我不了解此功能的用法,因为我可以在不使用此功能的情况下直接更改值,即使这是通过使用观察代码增加的代码行数,并且与ViewModel通过创建MutableLiveData.

下面的ViewModel代码公共类 FirstViewModel 扩展了 ViewModel {

    // Create a LiveData with a String
    public MutableLiveData<String> mCurrentName;


    public MutableLiveData<String> getCurrentName() {
        if (mCurrentName == null) {
            mCurrentName = new MutableLiveData<String>();
        }
        return mCurrentName;
    }


}

在活动中使用

public class MainActivity extends AppCompatActivity {
    private FirstViewModel mModel;
ActivityMainBinding mBinding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mBinding=DataBindingUtil.setContentView(this,R.layout.activity_main);


        // Get the ViewModel.
        mModel= ViewModelProviders.of(this).get(FirstViewModel.class);


        // Create the observer which updates the UI.
        final Observer<String> nameObserver = new Observer<String>() {
            @Override
            public void onChanged(@Nullable final String newName) {
                // Update the UI, in this case, a TextView.
                mBinding.mNameTextView.setText(newName);
            }
        };

        // Observe the LiveData, passing in this activity as the LifecycleOwner and the observer.
        mModel.getCurrentName().observe(this, nameObserver);


       mBinding.btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              String anotherName = mBinding.etField.getText().toString();
             mModel.getCurrentName().setValue(anotherName);
            }
        });

    }
}
苏普里亚

ViewModelLiveDataAndroid的架构组件一起帮助创造生命周期感知应用程序。

ViewModel: ViewModel 类通常用于将视图逻辑(存在于 Activity 类中)与包含在 ViewModel 类中的业务逻辑显着分离。这种隔离是一种很好的架构设计,在维护大型项目时变得非常重要。

LiveData: LiveData 有助于以生命周期感知方式实现Observer Observable 模式

在您的情况下,这可能看起来微不足道,因为您只是为 a 设置值TextView然而,考虑一些常见的场景,比如点击 api 来检索数据等。在这种情况下,ViewModel负责提供要在 中显示的数据Activity,当在 的帮助下完成时,LiveData可以通过轻松确保生命周期意识来帮助避免崩溃。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ViewModel,LiveData和Transformations.map

来自分类Dev

关闭应用程序后,不会删除ViewModel和LiveData。为什么?

来自分类Dev

为什么 LiveData 在 ViewModel 中返回 null?

来自分类Dev

为什么我们需要javadoc和sources jar?

来自分类Dev

为什么我们需要Bower和Nuget?

来自分类Dev

为什么我们需要分别编译和链接?

来自分类Dev

我如何使用LiveData和ViewModel类将数据从Activity发送到Fragment

来自分类Dev

我们如何在ViewModel中将LiveData从Room“分配”到MutableLiveData

来自分类Dev

如何将WearableActivity与LiveData和ViewModel结合使用

来自分类Java

如何使用ViewModel,存储库和LiveData访问Room db

来自分类Dev

Transformations.map 与 Androidx 中的 ViewModel 和 LiveData(问题)

来自分类Dev

如何使用ViewModel和LiveData进行改造API调用

来自分类Dev

如何从后台服务和更新UI更新ViewModel的LiveData

来自分类Android

使用LiveData和ViewModel的mutableListOf中的索引问题

来自分类Dev

在不使用Room的情况下使用LiveData和ViewModel

来自分类Dev

屏幕旋转后,Android Arch组件ViewModel和LiveData触发

来自分类Dev

如何使用 ViewModel 和 LiveData 正确编码 RecyclerView

来自分类Dev

什么是训练准确性和训练损失?为什么我们需要计算它们?

来自分类Dev

为什么我们需要分开Apply和Applicative类型类?

来自分类Dev

为什么我们需要一个“MultiRepositoryProvider”和一个单独的“MultiBlocProvider”?

来自分类Dev

Angular Router:为什么我们同时需要:警卫和事件?

来自分类Javascript

为什么我们需要在全局和本地安装gulp?

来自分类Dev

为什么我们同时需要迭代和迭代器概念?

来自分类Java

我们何时以及为什么需要ApplicationRunner和Runner接口?

来自分类Dev

为什么我们需要日期时间和日期时间?

来自分类Dev

为什么我们需要在C#中装箱和拆箱?

来自分类Dev

为什么我们同时需要std :: promise和std :: future?

来自分类Java

为什么我们需要struts中的global-forward和global-exceptions?

来自分类Dev

为什么我们需要识别实体和价值对象?

Related 相关文章

  1. 1

    ViewModel,LiveData和Transformations.map

  2. 2

    关闭应用程序后,不会删除ViewModel和LiveData。为什么?

  3. 3

    为什么 LiveData 在 ViewModel 中返回 null?

  4. 4

    为什么我们需要javadoc和sources jar?

  5. 5

    为什么我们需要Bower和Nuget?

  6. 6

    为什么我们需要分别编译和链接?

  7. 7

    我如何使用LiveData和ViewModel类将数据从Activity发送到Fragment

  8. 8

    我们如何在ViewModel中将LiveData从Room“分配”到MutableLiveData

  9. 9

    如何将WearableActivity与LiveData和ViewModel结合使用

  10. 10

    如何使用ViewModel,存储库和LiveData访问Room db

  11. 11

    Transformations.map 与 Androidx 中的 ViewModel 和 LiveData(问题)

  12. 12

    如何使用ViewModel和LiveData进行改造API调用

  13. 13

    如何从后台服务和更新UI更新ViewModel的LiveData

  14. 14

    使用LiveData和ViewModel的mutableListOf中的索引问题

  15. 15

    在不使用Room的情况下使用LiveData和ViewModel

  16. 16

    屏幕旋转后,Android Arch组件ViewModel和LiveData触发

  17. 17

    如何使用 ViewModel 和 LiveData 正确编码 RecyclerView

  18. 18

    什么是训练准确性和训练损失?为什么我们需要计算它们?

  19. 19

    为什么我们需要分开Apply和Applicative类型类?

  20. 20

    为什么我们需要一个“MultiRepositoryProvider”和一个单独的“MultiBlocProvider”?

  21. 21

    Angular Router:为什么我们同时需要:警卫和事件?

  22. 22

    为什么我们需要在全局和本地安装gulp?

  23. 23

    为什么我们同时需要迭代和迭代器概念?

  24. 24

    我们何时以及为什么需要ApplicationRunner和Runner接口?

  25. 25

    为什么我们需要日期时间和日期时间?

  26. 26

    为什么我们需要在C#中装箱和拆箱?

  27. 27

    为什么我们同时需要std :: promise和std :: future?

  28. 28

    为什么我们需要struts中的global-forward和global-exceptions?

  29. 29

    为什么我们需要识别实体和价值对象?

热门标签

归档