MVVM和Android Jetpack
Luckie stone
Android应用开发。
展开
-
如何构建Android MVVM 应用框架
概述说到Android MVVM,相信大家都会想到Google 2015年推出的DataBinding框架。然而两者的概念是不一样的,不能混为一谈。MVVM是一种架构模式,而DataBinding是一个实现数据和UI绑定的框架,是构建MVVM模式的一个工具。之前看过很多关于Android MVVM的博客,但大多数提到的都是DataBinding的基本用法,很少有文章仔细讲解在Android中是如何...转载 2018-04-11 15:19:08 · 814 阅读 · 0 评论 -
Navigation 详解三
配合 Toolbar在 BottomNavigationActivity 中添加 Toolbar,修改主题为 NoActionBar 的。override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activi...转载 2019-04-19 06:46:18 · 549 阅读 · 0 评论 -
Databinding (一) 基本用法
概述2015 年的 I/O 大会上,Google 发布了官方的数据绑定框架 Data Binding Library,使得官方原生支持 MVVM。Data Binding 是把数据直接绑定到 XML 文件上,并能实现自动刷新。Data Binding 减少了代码的耦合性,一些如 findViewById、setText 之类的操作都可以通过绑定实现。环境配置环境配置非常简单,只要在...转载 2019-07-08 07:04:43 · 747 阅读 · 0 评论 -
DataBinding (二) 事件处理
DataBinding 的事件处理有两种方法1. 方法引用2. Listener 绑定方法引用通常会定义一个 Handler 或者 Presenter 类,并定义一个和 Listener 的方法签名一样的方法,然后再 xml 中调用。public class MyHandlers { public void onClick(View view) { ... }}...转载 2019-07-08 07:09:02 · 718 阅读 · 0 评论 -
DataBinding (三) Observable
BaseObservableViewModel 的值变化之后,如果需要画面做相应的刷新,那么可以继承 BaseObservable。private static class User extends BaseObservable { private String firstName; private String lastName; @Bindable public...转载 2019-07-08 07:14:29 · 642 阅读 · 0 评论 -
DataBinding使用总结(三)列表展示
本文将进行阐述如何通过DataBinding展示RecyclerView列表先看一下效果:1.每个item展示Student name 和Student age两个Button2.点击name时,触发点击事件3.点击age时,触发点击事件,同时修改该控件的paddingLeft值一、Activity代码1.activity:先大概看一遍,不需要都看懂,我们后面会讲p...转载 2019-07-13 07:46:39 · 431 阅读 · 0 评论 -
Android DataBinding使用总结(四)多类型列表展示
今天主要是学习一下如何展示RecyclerView多类型列表,效果如下:(为了方便,不同的item采取不同的背景颜色)一、思路:1.创建不同的item_layout.xml文件2.在代码中判断出不同的ViewType3.创建出不同的ViewHolder4.分开控制不同的item的响应事件(点击、触摸等)DataBinding的一个优秀的特性——数据的双向绑定,因此我们可...转载 2019-07-13 09:28:40 · 204 阅读 · 0 评论 -
Android DataBinding使用总结(五)结合MultiType展示多类型列表
我们在上文中通过自己动手实现BaseMulTypeAdapter类,从而达到了一次实现,多次复用的效果,大概流程为:1.创建不同类型item的xml布局文件2.使对应的数据类(javaBean)实现IMulTypeBindingBean接口,在接口中返回该数据对应item类型的布局ID;3.创建BaseViewHolder和BaseMulTypeAdapter,之后我们在实现列表时,再...转载 2019-07-13 09:48:23 · 752 阅读 · 0 评论 -
DataBinding (四) 自定义属性
前言DataBinding 的时候,会调用 View 的,setXxx 方法。比如下面代码<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.name}" />绑定的时候,会调用 setText...转载 2019-07-10 06:47:13 · 612 阅读 · 0 评论 -
DataBinding (五) 自定义 View 的双向绑定
前言自定义 View 的时候如果用到非系统定义的属性的时候,如果要实现双向绑定,不是用了 @= 就行的,自定义 View 中还需要一些设置。下面通过一个例子来说明自定义 View 的双向绑定的实现。例子要求:1. 通过 RadioButton 来选择爱好(爱好的选项是:吃饭 / 睡觉 / 打豆豆)2. 画面加载的时候显示初始的爱好值(将 ViewModel 里设好的值传到 Rad...转载 2019-07-10 06:52:29 · 1960 阅读 · 0 评论 -
DataBinding (六) EditText 绑定 TextChangedListener 和 FocusChangeListener
XML 如下设定<EditText ...... app:addTextChangedListener="@{vm.textWatcher}" app:onFocusChangeListener="@{(view, hasFocus) -> vm.setText(((EditText)view).getText().toString(), hasFocus...转载 2019-07-10 07:01:22 · 2428 阅读 · 0 评论 -
Android DataBinding使用总结(一)
前言2015年谷歌I/O大会上介绍了一个框架DataBinding,DataBinding是一个数据绑定框架,以前我们在Activity里写很多的findViewById,现在如果我们使用DataBinding,就可以抛弃findViewById。DataBinding主要解决了两个问题:- 需要多次使用findViewById,损害了应用性能且令人厌烦- 更新UI数据需切换至UI线程,...转载 2019-07-10 07:08:29 · 347 阅读 · 0 评论 -
Navigation 详解二
配合 BottomNavigationView创建 Bottom Navigation ActivityBottomNavigationView 以更简洁的方式来实现过去的 BottomNavigationBar 的样式。Android Studio 中创建一个 Bottom Navigation Activity,自动生成 Activity。class BottomNavigati...转载 2019-04-19 06:44:41 · 787 阅读 · 0 评论 -
Navigation 详解一
Navigation 是 JetPack 中的一个组件,用于方便的实现页面的导航,所以抽象出了一个 destination 的概念,大部分情况一个 destination 就表示一个 Fragment,但是它同样可以指代 Activity、其它的导航图。最初要有个起始页面,叫 start destination,处于栈底,是启动时的第一个页面,当然也是返回可见的最后一个页面。多个 destin...转载 2019-04-19 06:43:07 · 756 阅读 · 0 评论 -
Android MVVM架构和 Data Binding的使用
什么是MVVM , 为什么需要MVVM?MVVM是Model-View-ViewModel的简写. 它是有三个部分组成:Model、View、ViewModel。Model:数据模型层。包含业务逻辑和校验逻辑。View:屏幕上显示的UI界面(layout、views)。ViewModel:View和Model之间的链接桥梁,处理视图逻辑。MVVM架构图如下:MVVM架构通过ViewModel隔离了...转载 2018-04-08 09:45:38 · 1546 阅读 · 0 评论 -
RxBinding的使用
1.RxBinding的好处1.首先RxBinding是对Android View事件的扩展,它使得你可以对View事件使用RxJava的各种操作。2.提供了与RxJava一致的回调,使得代码简洁明了。尤其是页面中充斥着大量的监听事件,各种各样的匿名内部类时。3.几乎支持我们常用的所有控件及事件。(v4、v7、design、recyclerview等)另外每个库还有对应的Kotlin支持库。2.R...转载 2018-04-03 15:44:22 · 1308 阅读 · 0 评论 -
使用 Architecture Component 构建 app
我们将通过一个用例演示如何使用Architecture Component构建一个app。 创建用户界面UI由UserProfileFragment.java以及相应的布局文件user_profile_layout.xml组成。要驱动UI,我们的data model需要持有两个数据元素。User ID: 用户的身份识别。最好使用fragment argument来传递这个数据。...翻译 2018-04-10 08:50:52 · 401 阅读 · 0 评论 -
Android 应用架构组件(Architecture Components)实践
Architecture Components 是在 2017 年 Google I/O 大会上,Google 官方推出的一个构建 Android 应用架构的库。它可以帮你避免在 Android 应用开发中常见的一些问题,比如:内存泄露,管理组件生命周期等等。本文将介绍如何利用 Architecture Components 库开发一个实际的 Android 应用 ArchitecturePrac...转载 2018-02-27 08:35:54 · 1826 阅读 · 0 评论 -
Android官方架构组件Lifecycle:生命周期组件详解&原理分析
概述在过去的谷歌IO大会上,Google官方向我们推出了 Android Architecture Components,其中谈到Android组件处理生命周期的问题,向我们介绍了 Handling Lifecycles。同时,如何利用 android.arch.lifecycle 包提供的类来控制数据、监听器等的 lifecycle。同时,LiveData 与 ViewModel 的 l...转载 2019-03-03 17:56:09 · 380 阅读 · 0 评论 -
Android官方架构组件ViewModel:从前世今生到追本溯源
概述2017年的Google I/O大会上,Google推出了一系列譬如 Lifecycle、ViewModel、LiveData等一系列 更适合用于MVVM模式开发 的架构组件。本文的主角就是 ViewModel ,也许有朋友会提出质疑:ViewModel 这么简单的东西,从API的使用到源码分析,相关内容都烂大街了,你这篇文章还能翻出什么花来?我无法反驳,事实上,阅读本文的...转载 2019-03-03 18:18:42 · 222 阅读 · 0 评论 -
Android官方架构组件LiveData: 观察者模式领域二三事
本文是 《Android Jetpack 官方架构组件》 系列的最后一篇文章,和一些朋友的观点不同的是,我认为它是 最重要 的核心组件,因为 LiveData本身很简单,但其代表却正是 MVVM 模式最重要的思想,即 数据驱动视图(也有叫观察者模式、响应式等)——这也是摆脱 顺序性编程思维 的重要一步。本文默认读者已经学习了 Lifecycle , 欢迎关注笔者的Jetpack系列:争取...转载 2019-03-03 18:19:51 · 294 阅读 · 0 评论 -
Android官方架构组件Paging:分页库的设计美学
前言我是一个崇尚 开源 的Android开发者,在过去的一段时间里,我研究了Github上的一些优秀的开源库,这些库源码中那些 天马行空 的 设计 和 思想 令我沉醉其中。在我职业生涯的 伊始,我没有接触过 技术大牛, 但是 阅读源码 可以让我零距离碰撞 全球行业 内 最顶尖工程师们 的思想,我渐渐爱上了 源码阅读。在感叹这些 棒极了 的设计方式时,我也尝试去 模仿 他们的代码风格。后...转载 2019-03-03 18:21:32 · 320 阅读 · 0 评论 -
Android官方架构组件Navigation:大巧不工的Fragment管理框架
前言我在项目中尽量避免 使用 和 管理 Fragment, 尤其是处理Fragment的 多重嵌套 和 回退栈的情况。所幸有Activity在,我绕过了很多 Fragment 复杂的使用场景——必须承认,相比Activity的简单易上手,Fragment的古灵精怪令我头痛不已。当然,Github上也有很多前辈对于Fragment的管理框架,这是 最简单 的解决方案,比如目前比较火的 Fra...转载 2019-03-04 07:01:42 · 335 阅读 · 0 评论 -
Android官方架构组件DataBinding双向绑定篇: 观察者模式的殊途同归
本文中我将尝试分享我个人 搭建个人MVVM项目 的过程中的一些心得和踩坑经历,以及在这过程中目前对 编程本质 的一些个人理解和感悟,特此分享以期讨论及学习进步。缘由最近在尝试搭建自己理解的 MVVM模式 的应用程序,在这近一个月中,我思考了很多,也参考了若干Github上MVVM项目源码,并从中获益匪浅。我根据所得搭建了一个MVVM开发模式的Github客户端,并托管在了自己的githu...转载 2019-03-04 07:02:00 · 1233 阅读 · 0 评论 -
Android官方架构组件Paging-Ex:为分页列表添加Header和Footer
概述Paging是Google在2018年I/O大会上推出的适用于Android原生开发的分页库,如果您还不是很了解这个 官方钦定 的分页架构组件,欢迎参考笔者的这篇文章:Android官方架构组件Paging:分页库的设计美学笔者在实际项目中已经使用Paging半年有余,和市面上其它热门的分页库相比,Paging最大的亮点在于其 将列表分页加载的逻辑作为回调函数封装入 DataSour...转载 2019-04-23 06:12:42 · 535 阅读 · 0 评论 -
Android DataBinding使用总结(二)
一、基本的数据绑定1.可以通过这样的方式创建对象(JavaBean):/*** Created by QingMei on 2017/5/21 21:31* email:mei_husky@qq.com* desc:Used to*/public class Student{ public Student(String name, int age) { ...转载 2019-07-10 07:19:40 · 345 阅读 · 0 评论