首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Jetpack系列 之LiveData

将计数置为0。...所以我们就要做到当计数的数字发生改变时,通知TextView便于TextView重新显示,如果矬一点,可能会想到将View传递到ViewModel中,让ViewModel持有View的引用,这种方式确实可以实现需求...,但是后患无穷,并且View和ViewModel之前只能是单项的,即只能View层持有ViewModel,那么如何优雅的实现找那个需求呢?...嚯嚯,pia pia 打脸 这里报错的原因是因为我们的计数demo是运行在子线程中的,而LiveData的setValue方法只能在主线程中调用,如果想要在子线程中调动只能使用postValue方法,我们将赋值方法改为...、保存、显示分数 需求如下: 在输入框中输入分数、在textview中显示分数 EditText android:id="@+id/ed_socre" android:layout_width

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Jetpack-Compose 学习笔记(五)—— State 状态是个啥?又是新概念?

    从这里也可看出,Compose 是推荐将 State 状态设置为可观察的,这样当状态发生更改时,Compose 可以自动重组更新界面。...如果是在 View 体系中,一般实现的方法是在 EditText 添加一个 TextWatcher 类用于监听输入事件,然后在 onTextChanged 方法中对 TextView 设置输入的内容即可...(it) } ) } } TextField 组件相当于 EditText,onValueChange 可获取到用户的输入内容,在这里调用 ViewModel 中更新状态的方法...Composable 函数的重新绘制过程也被称之为 重组。 重组:使用新的输入Event事件重新调用可组合项以更新 Compose 树的过程。...Compose 推荐使用 ViewModel 来管理状态,包括状态的更新以及存储等。

    2.3K30

    正确认识 MVCMVPMVVM

    MVP 的简单使用 我们就以一个简单的登录案例来说明如何使用 MVP,下图是该案例的类图: ?...数据绑定 MVVM 最重要的一个特性就是数据绑定,通过将 View 的属性绑定到 ViewModel,可以使两者之间松耦合,也完全不需要在 ViewModel 里写代码去直接更新一个 View。...数据绑定系统还支持输入验证,这提供了将验证错误传输到 View 的标准化方法。 通过数据绑定,当 ViewModel 的数据发生改变之后,与之绑定的 View 也会随之自动更新。...至于这几个组件的基本用法,我就不详细讲解了,不熟悉的自行去学习下即可。 我们还是以登录页面为例,我们页面将展示4个控件:登录账号的输入框、密码的输入框、登录按钮、登录成功后返回的 UID。...来看看两个 EditText 和 最后的 TextView 的 android:text 属性的值是怎么设置的?

    2.8K33

    引入Jetpack架构后,你的App会发生哪些变化?

    答案显而易见,无非是想让数据使用者感知到而已,而LiveData可以优雅的实现这一流程,将 改变、通知 两步操作合并为一步 即省事也提高了安全性....所以结论是Jetpack ViewModel可以充当MVVM ViewModel 但二者并不等价 3.2 如何优雅的实现Fragment之间通讯?...ViewModel官方定义是一个带作用域的状态托管框架,可通过指定作用域和Activity/Fragment共存亡,为了将其状态托管发挥到极致,Google甚至单独为ViewModel开了个后门,Activity...横竖屏切换时不会销毁对应的ViewModel,为的就是横竖屏能共用同一个ViewModel,从而保证数据的一致性。...而双向绑定通常用在可交互式的View中,比如EditText内容会通过用户输入而改变的,此时需要通过双向绑定才能保证数据、UI一致。

    1.9K80

    引入Jetpack架构后,你的App会发生哪些变化?

    ViewModel与LiveData真乃天作之合 3.1 如何优雅的实现Fragment之间通讯? 3.2 由ViewModel担任 VM/Presenter 的好处有哪些? 4....答案显而易见,无非是想让数据使用者感知到而已,而LiveData可以优雅的实现这一流程,将 改变、通知 两步操作合并为一步 即省事也提高了安全性....所以结论是Jetpack ViewModel可以充当MVVM ViewModel 但二者并不等价 3.2 如何优雅的实现Fragment之间通讯?...横竖屏切换时不会销毁对应的ViewModel,为的就是横竖屏能共用同一个ViewModel,从而保证数据的一致性。...而双向绑定通常用在可交互式的View中,比如EditText内容会通过用户输入而改变的,此时需要通过双向绑定才能保证数据、UI一致。

    84300

    如何构建Android MVVM应用程序

    和Controller的合体,既要负责视图的显示又要加入控制逻辑,承担的功能过多,代码量大也就不足为奇。...而且UI改变后牵扯的逻辑耦合度太高,一旦控件更改(比较TextView 替换 EditText等)牵扯的更新UI的接口就必须得换。 复杂的业务同时会导致presenter层太大,代码臃肿的问题。...数据驱动 在MVVM中,以前开发模式中必须先处理业务数据,然后根据的数据变化,去获取UI的引用然后更新UI,通过也是通过UI来获取用户输入,而在MVVM中,数据和业务逻辑处于一个独立的View Model...(TextView 换成 EditText)ViewModel 几乎不需要更改任何代码,专注自己的数据处理就可以了,如果是MVP遇到UI更改,就可能需要改变获取UI的方式,改变更新UI的接口,改变从UI...4、总结和源码### 本篇博文讲解主要是一些个人开发过程中总结的Android MVVM构建思想,更多是理论上各个模块如何分工,代码如何设计,虽然现在业界使用Android MVVM模式开发还比较少,但是随着

    1.3K10

    Android EditText使用详解-包含很多教程上看不到的功能演示

    EditText是TextView的子类,所以TextView的方法和特性同样存在于EditText中,具体的TextView的介绍可以参考上一节Android TextView小组件的使用–附带超链接和跑马灯效果...有时候我们需要说明你定义的这个EditText是做什么用的,比如让输入“用户名”,或者输入“电话号码”等,但是你又不想在EditText前面加一个TextView来说明这是输入“用户名”的,因为这会使用一个...EditText为我们提供了android:hint来设置当EditText内容为空时显示的文本,这个文本只在EditText为空时显示,你输入字符的时候就消失了,不影响你的EditText的文本。。...四:输入特殊格式的字符 在我们开发程序的时候不免会输入一些特属个数的字符,比如密码(输入框的字符要加密显示),电话号码(比如数字和-),数字等,这些都算是一些特属格式的字符,强大的EditText同样为我们提供了输入这些特属格式字符的设置...可以通过输入文字和点击下面的按钮测试。 八:小结 这结详细介绍了EditText的大部分特性和常用功能,如常用的密码框,获取值等等。这几天忙的没更新,这次更新个长的。可以够消化一阵子的。

    3.9K20

    Android Jetpack架构组件(八)之DataBinding

    Binding类为每一个variable标签使用set方法传递数据,如下所示。...但是如果一个布局文件中使用了DataBinding,同时也使用了include标签,那么如何使用nclude标签引入的布局文件中中的数据呢。...例如,有下面这样一个需求:我们希望可以根据图片地址动态的改变显示图片。如果使用BindingAdapter 如何实现呢?...例如有下面的场景:如果布局中有一个EditText,当用户在输入框中输入内容时,我们希望对应的Model类能够实时更新,这就需要双向绑定,DataBinding同样支持这样的能力。...在RecyclerView中使用DataBinding就是如此简单,当List中的item数据发生变化时,列表中的内容也会随之更新。

    2.3K20

    Android DataBinding 从入门到进阶,看这一篇就够

    MVVM 相对于 MVP,其实就是将 Presenter 层替换成了 ViewModel 层。...layout 标签将原布局包裹了起来,data 标签用于声明要用到的变量以及变量类型,要实现 MVVM 的 ViewModel 就需要把数据(Model)与 UI(View)进行绑定,data 标签的作用就像一个桥梁搭建了...BaseObservable 一个纯净的 ViewModel 类被更新后,并不会让 UI 自动更新。...,而视图改变时也可以同时改变数据 看以下例子,当 EditText 的输入内容改变时,会同时同步到变量 goods,绑定变量的方式比单向绑定多了一个等号: android:text="@={goods.name...,但有了 BindingConversion 后就可以自动将字符串类型的值转为需要的 Drawable 和 Color 了 TextView android:layout_width

    8.1K72

    安卓第六夜 凡高的自画像

    在割掉自己的耳朵一部分后,画家给自己留下了这幅自画像。在当时,这幅画依然是无人问津。 ? 描述 我将创建一个新的Activity。这个界面允许用户输入本人的姓名和博客地址。这些输入数据将在会保存起来。...利用Intent,启动一个新的Activity。 文本输入。增加EditText输入栏,让用户输入文本信息。 数据存储。将数据存入SharedPreferences,跨Activity读取。...新Activity的界面 我们要设计一个用于输入姓名和博客地址的安卓界面。由于姓名和博客地址都是字符串类型,因此我们可以借助EditText类的View元素,来增加字符串类型的输入栏。...按钮是最容易想到的方式。这里,我没有使用按钮,而是为一个TextView增加点击事件监听。 ?...在提交数据后,这个Activity将通过EditText的getText()方法获取字符输入。提交的字符串将使用SharedPreferences存储起来。

    1.2K70

    Android开发之输入框EditText介绍

    这篇文章主要为大家详细介绍了Android布局之输入框EditText设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 现在先简单介绍一下技术点: 1.如何使用圆角输入框和按钮背景 2.如何实现...“手机号”、“密码”后面的竖线 3.如何嵌套输入框的布局 4.如何监听输入框的输入事件及删除按钮的动态显示隐藏 1.如何使用圆角输入框和按钮背景 安卓为开发者准备了shape这个xml标签,用于自定义一些形状...drawable/shape_wihte_frame" 2.如何实现“手机号”、“密码”后面的竖线 这个其实很简单,只需书写一个竖线即可,宽度为1dp或者1px(或你认为更合适的数值)。...必须嵌套,很多新手不敢去嵌套,大家一定要大胆的去嵌套去使用各种布局,一定会组合出炫酷的效果的。这里布局很简单仅仅是一层嵌套(整个页面布局嵌套输入框的布局)。...,在这里仅仅是简单介绍一下输入框控件,后面会陆续更新一些比较好的技术和个人见解,感谢大家支持!

    2.1K10

    【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )

    , 运行过程中 , 在 UI 界面中 , 可以 修改 ViewModel 中的值 , 并 将新的值设置在 视图 View 中 ; 但是 , 如果 数据是在 ViewModel 中发生的改变 , 那么如何...{ // 将 ViewModel 中的数据设置到 视图 View 组件中 textView.setText("${myViewModel.second.value}")...; 使用 传统的开发方式 , 可以使用 线程通信 , Handler 或者 广播 等形式 , 在子线程中通知主线程更新 UI ; 使用 LiveData 后 , 将数据定义在 LiveData 中 ,...然后在 Activity 中 为 LiveData 添加 Observer 监听器 , 当 LiveData 数据发生改变时 , 会自动回调该监听器的 onChange 方法 ; 1、ViewModel...组件 , 该组件显示的是 ViewModel 中的 LiveData 数据 , 当该 LiveData 数据发生改变时 , 对应 TextView 显示也随之更新 ; package kim.hsl.livedatademo

    1.3K20

    Android开发笔记(一百四十六)仿支付宝的支付密码输入框

    为直观理解支付密码输入框的业务需求,下面还是先看看该输入框的最终效果图。 ? 从图中可以看出,这个支付密码输入框由六个方格组成,每个方格输入并显示第几位的密文字符。...可是单张静态截图无法准确体现支付密码输入框的具体功能,因此我们再来看看使用该输入框的完整操作流程,相关动图如下所示。 ?...对于处理密码输入的EditText来说,需要实现以下几项操作: 1、把默认的下划线背景替换为圆角背景,且支持在获得焦点时高亮显示; 2、屏蔽输入光标,可调用setCursorVisible方法设置为不可见...,队列长度为6; 2、每项密码文本控件都是一个TextView,文字居中对齐; 3、往布局上添加TextView队列时,在相邻的TextView之间要添加一条竖线,也就是宽度为1的灰色View; 4、依据转换规则...,决定当前显示明文还是密文;如果是密文,则显示哪个密文字符; 5、每当EditText里的文本发生变更之时,相应更新TextView队列的各项文本显示; 上述的改造内容,大部分都有可以直接调用的函数,

    1.9K30

    这是一份全面 & 清晰的架构设计指南:MVC、MVP & MVVM模式(含实例讲解)

    的压力,于是出现了MVVM模式 定义 VM层:ViewModel,即 View的数据模型和Presenter的合体 基本上与 MVP 模式完全一致,将逻辑处理层 Presenter 改名为 ViewModel...三种模式出现的初衷 MVC模式的出现 为解决程序模块化问题,于是MVC模式出现了:将业务逻辑、数据处理与界面显示进行分离来组织代码,即分成M、V、C层; MVP模式的出现 但M、V层还是有相互交叉、...下面,我将详细讲解一下最常用的MVP模式的核心思想 & 使用 ---- 5. MVP模式详解 此处主要详细分析MVP模式的核心思想,并实例说明。...private EditText et; private TextView tv; CidianPresenter cidianPresenter;...) findViewById(R.id.editText); tv = (TextView) findViewById(R.id.tv);

    1.7K10

    【谷歌官方文档】1.1 建立第一个APP

    在本小节里,我们将学习如何用 XML 创建一个带有文本输入框和按钮的界面。...点击这个面板中的标签,可利用 WYSIWYG(所见即所得)工具在 Design 面板看到对应的图形化效果。但在本节中,我们将学习如何直接修改 XML 文件。 删除 [TextView>] 标签。...在下一节的教程中你将学会如何定义字符串资源,到时候就不会报错了。 资源对象 资源对象是与 APP 资源(如:位图、布局文件、字符串)关联的唯一整数。...图 2 EditText 和 Button 窗体小组件使用 "wrap_content" 作为宽度属性的值。 这样设置对按钮来说很合适,但是对于文本框来说就不太好了,因为用户可能输入更长的文本内容。...让输入框充满整个屏幕的宽度 为让 EditText 充满剩余空间,做如下操作: 在 content_my.xml 文件里,设置 [EditText>] 的 layout_weight 属性值为 1。

    2.4K20
    领券