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

解决android viewmodel 数据刷新异常问题

3年wpf开发经验,自认为对数据驱动UI开发模式使用不是问题,但当开始研究androidmvvm模式开发时,发现两年多android开发经验已经将之前wpf开发忘得7788了。...补充知识:使用Android DataBinding时发现只能显示一次,不能动态更新数据 本文只是记录解决错误过程,可能起不到分享意义。...通过三个Fragment共同使用ActivityViewModel来实现数据共享。 但是最后出现个现象就是只有刚进入页面时,ViewModel数据会显示在视图上。...通过点击事件更新ViewModel中 ObservableField 对象中数据,并不会刷新视图。 ?...@NewPesticideSingle (名字任意) 标注在 Module 和对应 Component 中即可 以上这篇解决android viewmodel 数据刷新异常问题就是小编分享给大家全部内容了

1.3K21

Android基于DataBinding+Koin实现MVVM模式页面快速开发框架

Android基于DataBinding封装RecyclerView实现快速列表开发 DataBinding 是 Google 官方一个数据绑定框架,借助该库,您可以声明式将应用中数据绑定到布局中界面组件上...Koin 无反射、无代码生成且使用更简单;借助该库可轻松在基于 kotlin Android 应用开发中实现依赖注入,降低代码耦合性。...' id 'org.jetbrains.kotlin.android' // 添加 kotlin-kapt 插件 id 'kotlin-kapt' } 配置完成后,点击 Sync...ViewModel 实现 在 MVVM 模式开发中,一般是通过 DataBinding 将布局与 ViewModel 绑定使用ViewModel数据变化自动刷新界面,实现数据驱动 UI 刷新...事件处理实现 ViewModel 自动绑定实现了,那怎么实现事件处理呢?

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

MVVM框架搭建(二)——项目搭建

之前用MVP重新写框架,但是也遇到了很多不方便地方,所以这次我们着重介绍MVVM框架 这里开始使用kotlin,并遵循googleApp开发架构指南,才找到一种较好构建MVVM应用程序方式...相比于MVP,MVVM没有多余回调,利用Databinding框架就可以将ViewModel数据绑定到UI上,从而让开发者只需要更新ViewModel数据,就可以改变UI。...yangzc * @data 2018/9/6 13:58 * @desc * */ class Onclick(val who: String, val count: Int) 以前我们写一个点击事件代码大概...${onclik.count}次" }) } } 就实现了我们平时经常写一段点击事件并且显示一段代码 然而 我们要用MVVM框架显然就不是这么写了 首先我们看一下架构 ?...: Int) 下面我们在看看ViewModel层 这里主要承担了数据处理功能 并负责提供给View层数据 ViewModel是用来存储和管理UI相关数据

1.3K20

Android基于DataBinding封装RecyclerView实现快速列表开发

,且设置数据方式改成了使用 DataBinding 绑定方式,降低了界面与逻辑耦合,从而大幅度减少样板代码编写,提升开发效率。...layout 资源 id itemClick OnItemClickListener item 点击事件,将item点击事件在布局里直接代理到 ViewModel 里 itemEventHandler...' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' } ardf 使用配置就完成了,点击 Sync Now同步 build.gradle...运行一下看一下效果: 3.4 item 点击事件 item 点击事件处理是列表开发中常见事件处理,如点击列表 item 跳转到对应详情页,ardf也对 item 点击事件进行了封装,只需要在...(item)}"/> 通过 DataBinding 将 item 点击事件代理到 ViewModel onItemClick 方法,onItemClick 方法是我们在 ViewModel 中自定义创建

2.7K30

Kotlin 协程】协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 )

使用 , 与 ViewModel 生命周期绑定 ; lifecycleScope : 该作用与仅在 Activity 中使用 , 与 Activity 生命周期绑定 ; 一、viewModelScope...作用域作用 ---- viewModelScope 协程作用域 需要绑定 ViewModel 生命周期 , 在特定界面中 , 如可旋转屏幕 Activity 界面中 , 如果使用 MainScope...= true } 即可 , 配置效果如下 : plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt...Studio 中选择 " 菜单栏 | Build | Make Project " 选项 , 或者使用 " Ctrl + F9 " 快捷键 , 首先要编译生成相关数据绑定类 ; MainActivity...// 设置点击事件 binding.button.setOnClickListener { // 更新 mainViewModel 数据

91720

实战 | 使用 Kotlin Flow 构建数据流 管道

Flow 是一种基于流编程模型,本文我们将向大家介绍响应式编程以及其在 Android 开发中实践,您将了解到如何将生命周期、旋转及切换到后台等状态绑定到 Flow 中,并且测试它们是否能按照预期执行...如果您更喜欢通过视频了解此内容,请 点击此处 查看。...△ 铺设管道 在 Android 应用中您可以简单地在每次需要时请求数据,例如我们可以使用挂起函数来实现在每次视图启动时向 ViewModel 请求数据,而后 ViewModel 又向数据层请求数据,接下来这一切又在相反方向上发生...△ 单向数据绑定 使用 Flow 可以想象对于这些组合和转换来说,我们需要一个成熟工具来完成这些操作。在本文中我们将使用 Kotlin Flow 来实现。...StateFlow 来改进这个问题,这样 StateFlow 将接收来自上游数据所有更新并存储最新值,并且收集器数量可以是 0 至任意多个,因此非常适合与 ViewModel 一起使用

1.4K10

学习|Android中JetPack中几个组件简单使用

新建一个Android项目起名为myviewmodel,然后在build.gradle中加入 apply plugin: 'kotlin-kapt' android { kotlinOptions...要使用DataBinding这个我觉得不用多主产了,直接开启这个就行,因为我用Kotlin所以上面还要加上kotlin-kapt 02 fragment-ktx引用 ?...上面这个是引用fragment-ktx引用,引用这个库时是为了让我们更简单调用ViewModel,一会儿代码我会写出不用这个调用方法,和用这个方法,当然引用这个时它会提示要使用jvm1.8,所以还需要加上下面的这步...然后再写一个按钮事件,就是点击按钮后直接对LiveData两个数据进行写入,写入方式上面也可以看出来,用postValue。 布局文件中DataBinding <?...双向数据绑定方式,就和Vue方式是很像 ? Button事件也是在这里进行绑定 ?

1.7K20

Android MVI框架搭建与使用

本文完成后效果图: 正文   每当一个新框架出来,都会解决掉上一个框架所存在问题,但同时也会产生新问题,瑕不掩瑜,可以在实际开发中,解决掉产生问题,就能够更好使用框架,那么MVI解决了MVVM...① 生成数据类 生成数据类,这里我们可以使用一个插件,搜索JSON To Kotlin Class,如下图所示:   下载安装之后,如果需要重启,你就重启AS,重启之后,右键点击model → New...进行JSON数据格式化,然后我们需要设置数据名称,这里输入Wallpaper,因为我们需要使用Moshi,将JSON数据直接转成数据类,所以这里我们点击Advanced,如图所示:   这里默认是...initView()函数中是控件一些配置,比如给RecyclerView添加布局管理器和设置适配器,给按钮添加点击事件,在点击时候发送意图,发送意图被MainViewModel中mainIntentChannel...页面UI(点击事件发送意图) → ViewModel收集意图(确定内容) → ViewModel更新状态(修改_state) → 页面观察ViewModel状态(收集state,执行相关UI) 这是一个环

3.1K40

抛弃UITableView,让所有列表页不再难构建

小明想了一下,有这几个思路,可以在FeedCell里再嵌套个tableview,预先计算出高度,在commentCell删除按钮点击事件里重新计算高度然后删除cell;或者封装一下commentView...ListAdapter 适配器,它将collectionviewdataSource和delegate统一了起来,负责collectionView数据提供、UI更新以及各种代理事件回调。...return objects } ///返回每个数据对应sectionController, func listAdapter(_ listAdapter: ListAdapter,...Feed } } 这里把点击commentCell删除按钮事件代理出来给CommentSectionController处理,在闭包里先对cellModels数组删除,然后调用IGListKit...ListDiffable ListDiffable协议,这属于IGListKit核心Diff算法一部分,实现了ListDiffable协议才能使用diff算法,这个算法是计算新老两个数组前后数据变化增删改移关系一个算法

1.6K30

再谈协程之viewmodel-livedata难兄难弟

只提供了map、switchMap等有限处理能力 粘性事件问题:LiveData在注册时,会触发LifecycleOwneractiveStateChanged,触发了onChange,导致在注册前事件也被发送出来...优势: 简单,用于一次性请求数据简单快捷 ❝粘滞事件:发送消息事件早于注册事件,依然能够接收到消息为粘滞事件 ❞ 简单,是LiveData还在业务场景下大范围使用重要原因(还保留给Java代码使用也是一部分原因...我们在开发时候,通常会在Activity中发起请求,获取网络数据,然后在回调中渲染UI数据,这是一个比较标准渲染流程,在这个原始流程上,我们借助ViewModel,将数据与UI隔离,同时解决了数据生命周期问题...但这样创建ViewModel有个小问题,我们可以看下它源码,在ViewModelProvider中,它默认NewInstanceFactory是使用反射来创建VIewModel无参构造函数,如下所示...向大家推荐下我网站 https://xuyisheng.top/ 点击原文一键直达 专注 Android-Kotlin-Flutter 欢迎大家访问

1.1K40

Android技术栈(四)Android Jetpack MVVM 完全实践

不应该直达自己具体是和哪一个View进行交互.ViewModel主要工作就是将Model提供来数据直接翻译成View层能够直接使用数据,并将这些数据暴露出去,同时ViewModel也可以发布事件...在MVVM中View不是数据实际持有者,它只负责数据如何呈现以及点击事件传递,不做数据处理工作,而数据处理者和持有者变成ViewModel,它通过接收View层传递过来时间改变自身状态,发出事件或者改变自己持有的数据触发...,还请指点一二 如果你在模块中同时使用kotlin和DataBinding是可以,但是请一定不要使用kapt,除非JB那帮大佬搞定这些奇怪问题....Lifecycle.Event.ON_DESTROY事件来到时被释放,当然你也可以指定其他事件时释放. 6.2 防止多重点击 首先你可以使用JW大神RxBinding来实现这一需求,但是今天我们不讨论...,毕竟AndroidView层目前还没有办法做到完全数据驱动(主要是第三方库兼容问题).

3.8K01

Google 推荐在 MVVM 架构中使用 Kotlin Flow

Kotlin Flow 是什么? Kotlin Flow 解决了什么问题Kotlin Flow 如何在 MVVM 中使用?...DataSource 中使用会有几个问题 它不支持线程切换,其次不支持背压,也就是在一段时间内发送数据速度 > 接受数据速度,LiveData 无法正确处理这些请求 使用 LiveData 最大问题是所有数据转换都将在主线程上完成...数据 DataBinding(数据绑定) 在 PokemonGo 项目中使用了 DataBinding 进行数据绑定。...DataBinding(数据绑定)实际上是 XML 布局中另一个视图结构层次,视图 (XML) 通过数据绑定层不断地与 ViewModel 交互,如下所示: PokemonGo/app/src/main...如何处理 ViewModel 三种方式 如果不使用数据绑定,在 Activity 或者 Fragment 中如何处理 ViewModel 三种方式。

4.1K20

【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

一、ViewModel + LiveData + DataBinding 核心要点 1、ViewModel 使用要点 ViewModel 架构组件 是 视图 View 与 数据模型 Model 之间 数据交互... , 是 对 ViewModel 数据维护一个补充 ; 在 Activity 中使用代码可以将 ViewModel 初始数据 设置给 视图组件 , 进行 初始状态显示 ; 如果 在运行过程中 ,..., 可以将 运行过程中 ViewModel Model 模型数据改变 通知 视图 View , 令视图组件显示最新数据内容 ; 在 ViewModel使用了 LiveData 后 , 必须调用...DataBinding 主要作用是 绑定 下面两个元素 : 数据模型 Model / 视图模型 ViewModel 视图 View DataBinding 中除了绑定 数据模型 Model 之外 ,...(viewmodel.number)}" 为 Button 组件设置点击事件时 , 如果要 调用配置 ViewModel 对象函数 , 需要使用 ()->对象.函数() 形式进行调用 , 如下示例

1.3K20

js动态绑定事件,无法使用for循环中变量i问题

』 1.问题描述 在一个 for 循环中,我动态给一堆 a 标签绑定 onclick 事件时,发现点击事件不正确。...,点击第一个链接,弹出 0,点击第二个链接,弹出 1......以此类推。...但是上述代码点击每一个链接总是弹出一个值,而且还是个不正常值。之所以说它不正常,是因为上面我获取到了 5 个标签,正常下标应该到 4 结束,但是总是弹出 5 ????...答:那是因为事件函数是一个匿名函数,此函数会在 for 循环执行之后调用。调用时,发现内部没有定义变量 i ,所以就去外面找一下,发现外层有,就取外层值了,但是为什么是 5 呢?...那是因为 for 循环结束条件是 i 不满足 i<5 ,那么结束后变量 i 值就是 5,匿名函数到外层取值正好取到了它。

3.9K10

Android 架构组件最新进展 (上篇)

Jetpack 项目正是为了解决这些问题而诞生,Jetpack 是一系列助力您更容易打造优秀 Android 应用工具和组件,这些组件能帮助您遵循最佳实践、免除编写繁复样板代码并简化复杂任务,从而使您可以专注于最核心代码逻辑...数据绑定数据绑定 (Data Binding) 库是一种支持库,借助该库,您可以使用声明性格式 (而非程序化地) 将布局中界面组件绑定到应用中数据源。...数据绑定可以理解为代码和 XML 标记语言之间桥梁。 更快编译速度 对开发者来说,处理界面中数据绑定需要时间成本不容忽视,我们现在将数据绑定注解处理速度提高了 20%*。...更好地支持重构 在 IDE 里使用重构方式修改函数名称之后,XML 中会同步进行更新。 ? 更好用报错信息 数据绑定出错信息可能一下子跳出来 1,000 条,这种尴尬将成为过去。...点击这里进一步了解 Android Jetpack ?

89940

Jetpack:Data Binding入门指南

Data Binding Library(数据绑定库) 借助数据绑定库(Data Binding Library),可以使用声明性格式(而非程序化地)将布局中界面组件绑定到应用中数据源。...在一开始介绍Data Binding Libaray时,就使用了@{}语法,花括号里面的内容称为绑定表达式,绑定表达式其实并不复杂,跟我们正常使用Java和Kotlin语言表达式没多大区别。...}" 相关资源表达式引用,贴张官网截图: [image] 事件处理 数据绑定库允许我们在事件到View时候通过表达式去处理它。...在数据绑定库中支持两种机制:方法调用和监听器绑定。 好想一笔带过,因为原文看不明白~~~~(>_<)~~~~ 方法调用 点击事件会直接绑定到处理方法上,当一个事件发生,会直接传给绑定方法。...监听器绑定 监听器绑定与方法调用不同是,监听器不再编译器与处理方法绑定,而是在点击事件传递到当前view时,才与处理方法绑定,而且监听器并不要表达式方法名与处理方法同名,只要返回类型一致即可,如果有返回值得话

46520

【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 )

文章目录 一、字符串拼接函数 二、绑定点击事件函数 三、DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 1、DataBinding 布局中使用 import 标签导入...Java 类 2、DataBinding 布局中使用 import 标签导入 Kotlin 类 四、完整代码示例 1、数据类 2、导入 Java 类 3、导入 Kotlin 类 4、DataBinding...---- 在 DataBinding 布局中 , 如果想要为 View 组件绑定点击事件 , 需要绑定参数为 View 类型 , 返回值 void 函数即可 ; 在 Student 类中定义如下函数..., 会自动触发事件 ; 三、DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 ---- 除了将 字符串拼接 函数定义在 传入 Student 对象中之外 ,...; 绑定点击事件 : android:onClick="@{student.onClick}" 拼接字符串 : android:text="@{JavaStudentUtils.nameText(student.name

55550
领券