大杀器-RoboBinding

2024-06-03 19:18
文章标签 大杀器 robobinding

本文主要是介绍大杀器-RoboBinding,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架。 在没有性能损失的前提下(使用源代码生成来替代Java反射),RoboBinding 帮助你编写更可读,易于测试与维护的UI代码。

  • 通过绑定移除大量不必要的代码(如addXXListener(),findViewById()等) 。
  • 将难于测试的Android代码以及运行过久且不切实际的Android单元测试 变为 pojo PresentationModels 及其普通的JUnit单元测试。
  • 提供对象类型Cursor来替换 - 关系类型Cursor,因为我们已经习惯于操作对象 。
  • 可以很容易的为任何自定义组件,第三方组件或Android widget编写属性绑定实现,简化代码,使项目易于维护。

官网: http://robobinding.org

有中文翻译版本,关于详细介绍,移步官网,下面主要填一下使用Android Studio配置时的一些坑.

根据官方介绍,我使用了AspectJ(AS上不好配置),也可以不用
1.配置 app/build.gradle


buildscript{repositories{mavenCentral()maven(){name 'RoboBinding AspectJPlugin Maven Repository'url "https://github.com/RoboBinding/RoboBinding-aspectj-plugin/raw/master/mavenRepo"}}dependencies {classpath 'com.android.tools.build:gradle:1.+'classpath 'org.robobinding:aspectj-plugin:0.8.4'classpath 'com.neenbedankt.gradle.plugins:android-apt:1.+'}
}

注意需要引用v4,我是在libs添加的jar包

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'org.robobinding.android-aspectj'
compile ("org.robobinding:robobinding:0.8.9:with-aop-and-dependencies") {exclude group: 'com.google.guava', module: 'guava'}aspectPath ("org.robobinding:robobinding:0.8.9:with-aop-and-dependencies") {exclude group: 'com.google.guava', module: 'guava'}apt "org.robobinding:codegen:0.8.9"androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.2.1'
repositories {jcenter()mavenCentral()maven() {name 'SonaType snapshot repository'url 'https://oss.sonatype.org/content/repositories/snapshots'}
}

android {....//这里是禁止xml中使用bind命名空间时报错的lintOptions {disable 'UnusedAttribute', 'ValidFragment', 'GradleDependency', 'OnClick', 'MissingPrefix', 'MenuTitle'}...
}

以上片段是需要注意的

还有就是网络问题,在公司的网络Gradle死活都编译不通,回到家立马就好了
接下来就是使用了


以在Fragment中使用为例(官方的例子用法很全了)
1. fragment_demo.xml

<LinearLayout //加上命名空间xmlns:bind="http://robobinding.org/android"<TextViewbind:text="{content}"

点击事件 bind:onClick=”methodName”
还支持其他更多属性的绑定

  1. DemoPresentationModel.java
//加上注解
@PresentationModel
public class DemoPresentationModel{private String content; //对应xml中bind:text="{content}"public String getContent(){return content;}public String setContent(Content content){this.content = content;}
}
  1. DemoFragment.java
    @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);presentationModel = new DemoPresentationModel();presentationModel.setContent("内容");}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {ViewBinder viewBinder = new BinderFactoryBuilder().build().createViewBinder(getActivity());View rootView = viewBinder.inflateAndBind(R.layout.fragment_demo, presentationModel);   //xml里面按照上面的要求,不能写错return rootView;}

需要更新属性的,让POJO类实现HasPresentationModelChangeSupport

//加上注解
@PresentationModel
public class DemoPresentationModel implements HasPresentationModelChangeSupport{private String content; //对应xml中bind:text="{content}"private PresentationModelChangeSupport changeSupport;public DemoPresentationModel(){changeSupport = new PresentationModelChangeSupport(this);}public String getContent(){return content;}public String setContent(Content content){this.content = content;}public void updataContent(String newContent){changeSupport.firePropertyChange("content");//更新content属性}
}

然后我们调用 updataContent来更新视图


一下子简化好多代码和逻辑,还有其他更强大的功能,官网观看,还有中文的视频

这篇关于大杀器-RoboBinding的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1027870

相关文章

Borg:Google集群管理大杀器

论文研读系列是阅读、总结计算机领域优秀论文的系列文章。由于论文的学术性较高,无法面面俱到,只会就关键思想进行概括介绍。 简介 Google的Borg集群系统需要管理数十万个jobs,要能够提高资源使用率、隔离性,通过调度策略降低关联故障发生率,通过声明式job描述语言简化复杂性。 Borg提供三个主要优势: 1.隐藏资源管理与故障处理的细节,用户可以集中在应用开发上2.高可用、高稳定3.O

chatTTS打破人机对话的壁垒 短视频、小说配音营销场景大杀器

过去我们让AI说话,它给出的总是不咸不淡的机器合成声音,毫无波澜的死板音调让人听得昏昏欲睡。但由于chatTTS的到来,一切都将会变得不一样。作为一款强大的对话式文本转语音模型,它完美解决了用户对于生动对话的需求。如此功能不可小觑,可以称得上在业界一骑绝尘。对于短视频内容创作,有声小说配音,数字营销推广以及日常办公,它都可以成为强有力的助手。此外,该项目还衍生出音色抽卡,长文本推理,角色扮演等功能

三年内拿下众多500强客户,观远数据这家新兴BI厂商有哪些大杀器?

成立于2016年的观远数据,在BI市场中可谓是不折不扣的新玩家,但是不到3年时间,观远数据已经在泛零售领域站稳了脚跟。这背后,是哪些因素推动着观远数据的快速发展? 1、定位一站式智能分析平台,实施Land-and-Expand策略 目前,观远数据的一站式分析平台可以覆盖从数据接入、存储、分析与可视化、AI预测以及分发与消费的数据分析-决策支持全流程。 在数据源方面,观远数据可敏捷融合多种

还在用 Spring Cloud?试试 Spring Cloud Alibaba 大杀器!!

近年来,微服务凭借可以有效提升系统的快速交付、灵活部署、并且能够更方便实现后期功能扩展的优势,已经成为互联网平台系统设计的一大热点,使得我们Java工程师都开始学习掌握微服务相关的知识技能。   在微服务大火的当下,我们就不得不提Spring Cloud和Spring Cloud Alibaba。Spring Cloud是当下主流的微服务架构,而Spring Cloud Alibaba则是阿里巴

微信管理大杀器:这个让工作高效不费力的利器你值得拥有!

在如今互联网社交时代,微信已经成为了人们生活中不可或缺的一部分。无论是与朋友聊天、分享生活,还是与客户进行商务洽谈,微信都扮演着重要的角色。对于个人而言,拥有一个高效管理微信私域的工具,将极大地提升运营效率。今天我将给大家分享一个强大的微信私域管理工具,它将满足你的需求,并帮助你取得更好的运营效果。 1、批量自动添加好友 毫无疑问,好友数量的增加对于微信私域运营至关重要。

大杀器!攻克目标检测难点秘籍四,数据增强大法

点击上方“AI算法修炼营”,选择加星标或“置顶” 标题以下,全是干货 前面的话 在前面的秘籍一:模型加速之轻量化网络、秘籍二:非极大抑制算法和回归损失优化之路、秘籍三:多尺度检测中,我们主要关注了轻量化网络,非极大值抑制算法、回归损失优化以及目标检测中的小目标检测。 但是以笔者参加计算机视觉相关竞赛的经验(接下来会更新相关竞赛系列)来看,数据增强和模型融合是比赛涨分的大杀器,好的数据增强可以有效

【开发大杀器】之Idea

快速交付必然有好的工具来提高开发效率,本篇介绍开发重磅大杀器IntelliJ IDEA。包括我们多年开发用到的压箱底工具都大公开啦,以下就是福利时间了~ win+linux双系统,同时支持沙箱反复验证!Idea常用配置及技巧分享Idea集成docker,全自动发布、图形化管理应用! 一、Win10开发机安装准备 工欲善其事必先利其器,开始idea使用前,做好本地开发机的优化也是很有必要的

模型竞赛大杀器-(stacking)融合模型

一套弱系统能变成一个强系统吗? 当你处在一个复杂的分类问题面前时,金融市场通常会出现这种情况,在搜索解决方案时可能会出现不同的方法。  虽然这些方法可以估计分类,但有时候它们都不比其他分类好。 在这种情况下,合理的选择是将它们全部保留下来,然后通过整合这些部分来创建最终系统。  这种多样化的方法是最方便的做法之一:在几个系统之间划分决定,以避免把所有的鸡蛋放在一个篮子里。 一旦我对这种情况

轻松掌握curl:命令行中的网络大杀器

轻松掌握curl:命令行中的网络大杀器 前言第一部分:基础知识curl的安装和初使用在Linux上安装curl:在macOS上安装curl:在Windows上安装curl:发送GET请求:发送POST请求: 第二部分:进阶使用参数说明自定义请求头:Cookie管理:文件下载:文件上传:HTTP响应处理:HTTP代理配置: 第三部分:高级主题使用curl进行测试:API测试:性能测试:连通性测

面试大杀器之:给我说说:volatile

在我们学习并发时,有一个关键词是任何时候都没有办法绕过去的!没错,volatile。很多人对volatile的认知还停留在概念上,殊不知,你说的这些,都不是面试官希望了解的,概念谁不知道,想知道的是为什么。好的,今天由我给大家带来volatile史上最刨根问底的面试问题,看看你能挺到第几关? volatile的特性 可见性:对一个volatile变量的读,①总是能看到(任意线程)对这个vol