哪个网站帮忙做户型方案网络架构配置

diannao/2026/1/26 16:06:14/文章来源:
哪个网站帮忙做户型方案,网络架构配置,wordpress主题 minecraft,威海泰浩建设集团有限公司网站简介 DataBinding是Google在18年推出的数据绑定框架#xff0c;采用了MVVM模式来降低各模块之间代码的耦合度#xff0c;使得整体代码逻辑设计更加清晰。众所周知#xff0c;MVVM类似于MVC#xff0c;主要目的是为分离View#xff08;视图#xff09;和Model#xff08…简介 DataBinding是Google在18年推出的数据绑定框架采用了MVVM模式来降低各模块之间代码的耦合度使得整体代码逻辑设计更加清晰。众所周知MVVM类似于MVC主要目的是为分离View视图和Model模型同时进行双向数据绑定当业务数据发生改变时View能及时刷新当View数据更新时同时能同步到Model。同时DataBinding能省去findViewById()操作大量减少Activity内代码根据业务场景可以让数据能单向或双向绑定到对应界面layout中能较好的避免空指针以及防范内存泄漏。 使用 启用方式在Module的build.gradle中构建 android { ... buildFeatures {dataBinding true } }1、布局绑定 在要编写的布局文件中选定根布局按Alt回车快捷键唤出提示 选择第一个即可生成符合DataBinding规则的布局文件 ?xml version1.0 encodingutf-8? layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsdata/dataandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivity.../androidx.constraintlayout.widget.ConstraintLayout /layout可看见原根布局被包裹住了且布局元素上方出现 data标签在这 data标签是用于声明要用到的变量以及变量类型在MVVM模式中扮演的是一个View和Model通讯的中间人角色。 生成dataBinding规则的布局后数据绑定库会自定生成将布局中的视图和数据绑定所需的类类名为layout.xml文件名DataBinding的驼峰规则命名组合这点与ViewBinding类似。 比如我这个是MainActivity.class布局文件为activity_main.xml则相应绑定类类名为 ActivityMainBinding 。 2、绑定流程 步骤一先编写一个简单的实体Bean类 java版 public class UserInfo {public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}private String name;private int age;}kt版 data class UserInfo(val name: String,val age: Int) {}步骤二在布局文件中的里引用要使用到的变量名、类的全路径如下 datavariablenameUserInfoExampletypecom.example.dbjavatest.bean.UserInfo //data在这里中的name可以随意命名但建议跟实体bean类一致以免后续遗忘type则为对应实体bean类的全路径 PS 这里有两个极少数情况后续你可能发现如果要多出引用这个bean实体类要写不同的命名区分就会变成这样 datavariablenameUserInfoExampletypecom.example.dbjavatest.bean.UserInfo /variablenameUserInfoExample2typecom.example.dbjavatest.bean.UserInfo /... /data这时候可以通过 import 标签声明所有用到的这个实体bean类以上代码即变为 dataimport typecom.example.dbjavatest.bean.UserInfo/variablenameUserInfoExampletypeUserInfo /variablenameUserInfoExample2typeUserInfo /... /data如果import标签下两个类名相同哪怕全路径不同这里就要使用 alias 来指定别名如下 dataimport typecom.example.dbjavatest.bean.UserInfo/importaliasNewUserInfotypecom.example.dbjavatest.otherbean.UserInfo/variablenameUserInfoExampletypeUserInfo /variablenameUserInfoExample2typeNewUserInfo /... /data步骤三在View中引入数据使用 {} 语法类名即为我们在中定义的name ?xml version1.0 encodingutf-8? layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsdatavariablenameUserInfoExampletypecom.example.dbjavatest.bean.UserInfo //dataandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityTextViewandroid:idid/tv_user_firstandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{UserInfoExample.name}app:layout_constraintTop_toTopOfparentapp:layout_constraintStart_toStartOfparent/TextViewandroid:idid/tv_user_secondandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{UserInfoExample.age}app:layout_constraintTop_toBottomOfid/tv_user_firstapp:layout_constraintStart_toStartOfparent//androidx.constraintlayout.widget.ConstraintLayout /layout可以看出布局文件里第一个TextView的text通过{UserInfoExample.name}引用UserInfo的name属性第二个TextView的text通过{UserInfoExample.age}引用UserInfo的age属性。 步骤四在Activity中实现数据绑定 java版 public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding viewDataBinding DataBindingUtil.setContentView(this, R.layout.activity_main);UserInfo userInfo new UserInfo(亚历山大, 99);viewDataBinding.setUserInfoExample(userInfo);} }kt版 class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val viewDataBinding: ActivityMainBinding DataBindingUtil.setContentView(this, R.layout.activity_main)viewDataBinding.userInfoExample UserInfo(亚历山大, 99)} }可以看到这里不再需要传统的setContentView()指定布局了。直接通过 DataBindingUtil 设置布局文件并得到对应dataBinding对象并给相应属性赋值你可以发现此属性的setxxx()并不是bean实体类名而是布局中里的name属性名。 一运行发现报错 顺着提示找下原因在对应生成的ActivityMainBindingImpl.java类中的116行如下 原因就在此原UserInfo的实例getAge()返回的是int类型这里setText里只接受String按此推断修改原布局文件就可以了。 TextViewandroid:idid/tv_user_secondandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{String.valueOf(UserInfoExample.age)}app:layout_constraintTop_toBottomOfid/tv_user_firstapp:layout_constraintStart_toStartOfparent/按上述代码修改对应android:text“”中的属性运行后可正常发布 细心的你可能会发现xml预览界面中由于没有填写相应数值致使显示是一片空白。这样不利于我们去观察所设置的TextView颜色大小等属性实际表现结果这时我们可以去设置默认值来让其在预览界面中显示格式如下 android:text{UserInfoExample.name,defaultdefaultValue}我们修改原布局中元素属性为 TextViewandroid:idid/tv_user_firstandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{UserInfoExample.name,defaultdefaultValue}app:layout_constraintTop_toTopOfparentapp:layout_constraintStart_toStartOfparent/TextViewandroid:idid/tv_user_secondandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{UserInfoExample.age,default25}app:layout_constraintTop_toBottomOfid/tv_user_firstapp:layout_constraintStart_toStartOfparent/对应生成的预览界面为 3、Activity中使用 跟ViewBinding一样可通过ActivityMainBinding你对应的activity的dataBinding类来获取指定id控件例如 java版 viewDataBinding.tvUserFirst.setText(get到了第一个TextView);kt版 viewDataBinding.tvUserFirst.text get到了第一个TextView原布局中可在 data标签里指定对应的ViewBinding名称如果不指定就是默认根据文件名和驼峰原则生成的类名上面说的activity_main.xml和ActivityMainBinding。例如 data classDemoBinding... /data指定中的class后原activity就已经开始报错了此时要修改对应的ViewBinding为 DemoBinding 。原来activity中代码则改为了 java版 ...DemoBinding viewDataBinding DataBindingUtil.setContentView(this, R.layout.activity_main);UserInfo userInfo new UserInfo(亚历山大, 99);viewDataBinding.setUserInfoExample(userInfo);...kt版 ...val viewDataBinding: DemoBinding DataBindingUtil.setContentView(this, R.layout.activity_main)viewDataBinding.userInfoExample UserInfo(亚历山大, 99)...4、在Fragment和RecyclerView中使用 在Fragment中的使用于Activity类似这里为了方便Fragment的布局fragment_main.xml内容就跟原activity_main.xml内容保持一致。其activity_main.xml引用此Fragment的布局就修改为Fragment中id不能省略 ?xml version1.0 encodingutf-8? layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsdatavariablenameUserInfoExampletypecom.example.dbjavatest.bean.UserInfo //dataandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityfragmentandroid:idid/fragment_layoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:namecom.example.dbjavatest.MainFragment//androidx.constraintlayout.widget.ConstraintLayout /layoutFragment中代码表现则为 java public class MainFragment extends Fragment {NullableOverridepublic View onCreateView(NonNull LayoutInflater inflater, Nullable ViewGroup container, Nullable Bundle savedInstanceState) {FragmentMainBinding viewDataBinding DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false);viewDataBinding.setUserInfoExample(屋大维,99);return viewDataBinding.getRoot();} }kt class MainFragment : Fragment() {override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {val viewDataBinding: FragmentMainBinding DataBindingUtil.inflate(inflater, R.layout.fragment_main, container, false)viewDataBinding.userInfoExample UserInfo(屋大维,99)return viewDataBinding.getRoot()}... }可见在Fragment中使用的是 DataBindingUtil对应的inflate在onCreateView中返回对应ViewBinding.getRoot。其他使用与在Activity中使用一致这里就不赘述。 同样使用DataBindingUtil.inflate来获取ViewBinding对象的是RecyclerView的Adapter中: java版 ... NonNull Override public ViewBindHolder onCreateViewHolder(NonNull ViewGroup parent, int viewType) {ViewDataBinding inflate DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.item_recyclerview,parent,false);ViewBindHolder viewHolder new ViewBindHolder(inflate);viewHolder.setmViewBing(viewHolder);return new ViewHolder(inflater); } Override public void onBindViewHolder(NonNull ViewBindHolder holder, int position) {holder.bind(...);//传入的UserInfo } static class ViewBindHolder extends RecyclerView.ViewHolder{private ItemRecyclerviewBinding mViewBing;public ViewBindHolder(View view){super(view);}public void setmViewBing(ItemRecyclerviewBinding mViewBing) {this.mViewBing mViewBing;}public void bind(UserInfo userInfo){mViewBing.setUserInfoExample(userInfo);} } ...kt版 NonNulloverride fun onCreateViewHolder(NonNull parent: ViewGroup, viewType: Int): ViewBindHolder? {val inflate: ViewDataBinding DataBindingUtil.inflate(LayoutInflater.from(parent.context),R.layout.item_recyclerview,parent,false)val viewHolder ViewBindHolder(inflate)viewHolder.setmViewBing(viewHolder)return RecyclerView.ViewHolder(inflater)}override fun onBindViewHolder(NonNull holder: ViewBindHolder?, position: Int) { // holder.bind(...);//传入的UserInfo}class ViewBindHolder(view: View?) : RecyclerView.ViewHolder(view!!) {private var mViewBing: ItemRecyclerviewBinding? nullfun setmViewBing(mViewBing: ItemRecyclerviewBinding?) {this.mViewBing mViewBing}fun bind(userInfo: UserInfo?) {mViewBing!!.setUserInfoExample(userInfo)}}在onCreateViewHolder中通过DataBindingUtil去获取相应的dataBinding对象在ViewHolder中进行binding其余操作与Activity、Fragment差别不大这里不再赘述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/87926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么样让网站网址有图标城乡建设部网站甘红刚

一:匿名内部类/非静态内部类 匿名内部类的泄漏原因:匿名内部类会隐式地持有外部类的引用.当外部类被销毁时,内部类并不会自动销毁,因为内部类并不是外部类的成员变量, 它们只是在外部类的作用域内创建的对象,所以内部…

攻击网站常用方法类似一起做网店的网站

着色器(Shader)是运行在GPU上的小程序,这些小程序为图形渲染管线的某个特定部分而运行,从基本意义上来说,着色器只是一种把输入转化为输出的程序。 一、着色器类QOpenGLShaderProgram QOpenGLShaderProgram是Qt中对着…

可以做羞羞的游戏视频网站网站平台建设意见

&#xff08;1&#xff09;一个顾客买了价值x元的商品&#xff08;不考虑角、分&#xff09;&#xff0c;并将y元的钱交给售货员&#xff1a;编写代码&#xff1a;在各种币值的钱都很充分的情况下&#xff0c;使售货员能用张数最少的钱币找给顾客 #include<stdio.h> int…

不写编程可以做网站建设做网站公司哪个好

在 Mac 上查找保存的 Wi-Fi 密码的最简单方法之一是从系统设置内的高级 Wi-Fi 首选项页面。您可以通过下面的方式访问此页面来查找您保存的 Wi-Fi 密码。 1.在 Mac 上&#xff0c;选取「苹果菜单」选择「系统设置」。 2.从侧边栏中选择「Wi-Fi」&#xff0c;单击「高级」。 3.…

设计类平台网站wordpress站外搜索

熟悉vue项目的目录结构,在一定程度上能提高我的开发效率及查找文件的速度。 这里比较推荐使用VS code编译器,HBuild-x,webstorm等编译器相比之下逊色不少,用过的就知道有多香。 目录 Vue.js 目录结构 目录说明 VUE入门基本操作 Vue.js 模板语法

网站都不需要什么备案西安做网站公司云速

人工智能时代&#xff0c;最需要学习的编程语言是&#xff1a;python 。笔者是个 python 小白&#xff0c;昨天花了两个小时&#xff0c;第一次成功运行起来 python 项目 。 项目是 powerpoint-extractor &#xff0c;可以将 ppt 文件中的图片提取出来&#xff0c;并输出到固定…

为什么大网站的百度快照更新速度慢还排第一品牌广告设计制作公司网站源码

Photoshop 2023是由Adobe Systems开发和发行的一款强大的图像处理软件&#xff0c;广泛应用于专业摄影师、设计师、艺术家等用户群体。它拥有丰富的功能和工具&#xff0c;可以轻松进行图像编辑、合成、调整和修复等任务。在Photoshop 2023中&#xff0c;智能选择功能得到了升级…

国外做网站公司能赚钱外贸小家电网站推广

&#xfeff;> 本文我们讲解下怎么修改窗口样式&#xff0c;系统默认的窗口非常普通&#xff0c;通常与设计不符&#xff0c;所以我们要自定义&#xff0c;接下来我们讲解下怎么去掉原有样式&#xff0c;怎么实现实现窗口的最小化&#xff0c;最大化和关闭按钮。还有怎么打开…

jsp和php做网站那个快电子商务平台经营者向平台内经营者收取费用

设备驱动与变量定义 为了节省流量采用手动发送&#xff0c;因此不能使用官方驱动&#xff0c;需要使用用户自定义驱动&#xff0c;这里提供百度网盘下载地址&#xff08;见评论区&#xff09;。链接&#xff1a;https://pan.baidu.com/s/1ORy2UFOlHeRCXraYKC1xUA 提取码&#…

广州黄埔区百度词条优化

5201. 给植物浇水 你打算用一个水罐给花园里的 n 株植物浇水。植物排成一行&#xff0c;从左到右进行标记&#xff0c;编号从 0 到 n - 1 。其中&#xff0c;第 i 株植物的位置是 x i 。x -1 处有一条河&#xff0c;你可以在那里重新灌满你的水罐。 每一株植物都需要浇特定…

网站建设一般多少钱新闻企业管理系统作用

密码管理系统实例 需求分析&#xff1a; 1.主界面&#xff08;选项&#xff1a;密码生成&#xff0c;密码查询&#xff0c;密码修改&#xff0c;密码删除&#xff09;2.密码生成&#xff1a;用户输入密码的描述&#xff0c;输入密码的长度&#xff0c;使用随机数生成一个比较复…

洛阳网站建设建站系统杭州网站建设官方蓝韵网络

文章目录 红黑树的定义和性质为什么要发明红黑树&#xff1f;红黑树怎么考总览红黑树的定义实例&#xff1a;一颗红黑树练习&#xff1a;是否符合红黑树的要求一种可能的出题思路补充概念&#xff1a;节点黑高 红黑树的性质 红黑树的查找红黑树的插入实例小结与黑高相关的理论 …

租个国内服务器做网站多少钱企业管理系统项目简介怎么写

Frp内网穿透保姆级教程 windows内网穿透 准备工作 一台具有公网ip的云服务器(我的是ubuntu)frp程序 流程 将frps放到具有公网ip的服务器上将frpc放到需要内网穿透机器上&#xff0c;这里演示的是windows主机配置文件,然后启动 步骤 登陆服务器 ssh ubuntuip 在服务端下载…

上传引用图片 网站wordpress微信小程序

2024Mathorcup数学建模挑战赛&#xff08;妈妈杯&#xff09;C题保姆级分析完整思路代码数据教学 C题题目&#xff1a;物流网络分拣中心货量预测及人员排班 因为一些不可抗力&#xff0c;下面仅展示部分代码&#xff08;很少部分部分&#xff09;和部分分析过程&#xff0c;其…

优化网站做内链接wordpress ecommerce theme

文章目录 专栏导读1、什么是Python&#xff1f;列出 Python 在技术领域的一些流行应用。2、在目前场景下使用Python语言作为工具有什么好处&#xff1f;3、Python是编译型语言还是解释型语言&#xff1f;4、Python 中的“#”符号有什么作用&#xff1f;5、可变数据类型和不可变…

建设一个网站app需要多少钱seo必备软件

题目描述 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出&#xff0c;其间以“->”相连。 输入样例: 4 2 8输出样例: 2->4->8 程序代码 #include<stdio.h&…

access做网站数据方法53套网站源码

文章目录 题目描述测试样例算法原理算法实现参考资料 题目描述 在nxn格的棋盘上放置彼此不受攻击的n格皇后。按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在nxn格的棋盘上放置n个皇后&#xff0c;任何2个皇后不放在同…

合肥工程建设信息网站特种设备企业服务平台

Windows如何查看端口占用情况 方法1. cmd命令行执行netstat命令&#xff0c;查看端口占用情况 netstat -ano 以上命令输出太多信息&#xff0c;不方便查看&#xff0c;通过如下命令搜索具体端口占用情况&#xff0c;例如&#xff1a;8080端口 netstat -ano | findstr "…

网站的费用可以做无形资产吗网站建设丿金手指稳定

生产替代物料最近在InfoQ上&#xff0c;Aliasei Papou发表了一篇关于他的一些实验的文章 &#xff0c;该实验在线程之间进行了高性能的消息交换。 本文中有许多示例&#xff0c;但我将重点介绍多生产者案例。 文章显示的一种优化方法是&#xff0c;如果您知道初始化时拥有的生产…

网站路径怎么做wordpress zenmeyong

C程序设计语言 &#xff08;第二版&#xff09; 练习 4-14 练习 4-14 定义宏swap(t, x, y)以交换t类型的两个参数。&#xff08;使用程序块结构会对你有所帮助。&#xff09; 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xff0c;有部分可能需要…