首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

Android开发教程 - 使用Data Binding(五)数据绑定

本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fragment中的使用 使用Data Binding(五)数据绑定 使用Data Binding(六)RecyclerView Adapter中的使用 使用Data Binding(七)使用BindingAdapter简化图片加载 使用Data Binding(八)使用自定义Interface 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法 前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,在两者的布局文件中,都可以绑定数据(对象),本篇文章我们就来介绍数据的绑定。 <data>标签 在这个标签中,我们通常用来做下面的事情: - 定义所绑定的数据的名称(变量名)及对应类型 - 引入页面所需的类 示例如下: <data> <import type="android.view.View" /> <import type="android.text.TextUtils" /> <variable name="visible" type="boolean"/> <variable name="title" type="String"/> <variable name="user" type="cn.examplecode.androiddatabinding.User"/> </data> 其中”<import/>”标签表示引入一个类,比如上例中引入了View类和一个工具类TextUtils,当然也可以引入你自己的类,比如常量类或者工具类。 下面”<variable/>”标签定义了本页面所需要的各种数据名称或类型,其类型可以是java中的基础类型,或者自定义的类。 设置数据 上面定义了页面中所需要的数据后,下面就需要通过获取到的Binding对象设置这些数据: mBinding.setVisible(true); mBinding.setTitle("用户信息"); User user = new User(); user.setName("Steve Jobs"); mBinding.setUser(user); 这里的setXXX()方法也是IDE自动根据<data>标签中的定义自动生成的。 如果写代码过程中发现IDE并没有自动正确生成对应的setXXX()方法,则参考这篇文章:Android Data Binding没有正常生成相关类/方法的解决办法,仅需几步操作即可使IDE正常生成。 在布局中使用这些数据 数据设置完毕以后就可以在页面中使用这些数据了,使用起来也非常方便,比起在java代码中操作,可以省去不少代码。 <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{title}" android:visibility="@{visible ? View.VISIBLE : View.GONE}" /> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.name}" /> 请注意上面的代码: android:text="@{title}" 这一行是设置变量”title”的值到TextView中。 android:visibility="@{visible ? View.VISIBLE : View.GONE}" 这一行是根据变量”visible”的值来控制该TextView的显示与否,注意这里需要在<data>标签中引入android.view.View类,来使用View中的VISIBLE和GONE常量,这里可以使用问号表达式来判断。 android:text="@{user.name}" user是一个自定义对象,user.name意思是取user对象中的name的值。 User定义如下,注意必须设置getter/setter: public class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } 总结 通过本篇文章相信你已经了解如何将数据与View进行绑定,这是Data Binding的核心,也是MVVM架构模式的基础,这里介绍的是比较简单的绑定,后面我们将介绍更加深入的使用,使用这些技术后就会发现Data Binding的强大和高效率。

优秀的个人博客,低调大师

Android 开发小知识点收集(随时更新)

1、获取手机运行时最大可占用内存 int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " + maxMemory + "KB"); 2、改变dialog 在不同窗口内显示不同的大小 //在dialog.show()之后调用 public static void setDialogWindowAttr(Dialog dlg,Context ctx){ Window window = dlg.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.gravity = Gravity.CENTER; lp.width = LayoutParams.MATH_PARENT;//宽高可设置具体大小 lp.height = LayoutParams.MATH_PARENT; dlg.getWindow().setAttributes(lp); } 摘抄自:简书——MrRock 3、监听Activity是否显示在用户面前 @Override public void onWindowFocusChanged(boolean hasFocus) { // TODO Auto-generated method stub super.onWindowFocusChanged(hasFocus); } 当Activity展示咋用户面前则 hasFocus 为 true; 4、成员变量与局部变量的区别(简写:成、局) 1)、类中位置不同:成:类内 局: 方法内伙子方法上; 2)、内存中位置不同:成:栈内存 局:堆内存; 3)、生命周期不同:成:与对象共存亡 局:与方法共存亡; 4)、初始化值不同:成:有默认值 局:无默认值,必须赋值。 5、Java 获取可变的 uuid uuid 类似于时间戳 永远不可重复。 String uuid = UUID.randomUUID().toString().replaceAll("-", ""); 6、Android 获取 WiFi 的 ssid 1)、在 AndroidManifest.xml 文件内添加权限 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 2)、需要获取的位置添加如下代码 WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); Logger.d("wifiInfo"+wifiInfo.toString()); Logger.d("SSID"+wifiInfo.getSSID()); 3)、若不是想获取当前连接,而是想获取WIFI设置中的连接 WifiManager.getConfiguredNetworks() 4)、若获取更多的信息请查看这位兄嘚的博客:Android连续获取当前所连接WiFi及周围热点列表信息的解决方案 . 7、Android 打开 WiFi 设置界面 1)、判断手机是否连接wifi if (ConnectionDetector.getConnectionType(this) != ConnectionDetector.WIFI) { //跳转wifi配置界面 goToWifSetting(); } else { //wifi已经连接 } 代码如下: Intent intent = new Intent(); if(android.os.Build.VERSION.SDK_INT >= 11){ //Honeycomb intent .setClassName("com.android.settings", "com.android.settings.Settings$WifiSettingsActivity"); }else{ //other versions intent .setClassName("com.android.settings", "com.android.settings.wifi.WifiSettings"); } startActivity(intent); 或者 if (android.os.Build.VERSION.SDK_INT > 10) { // 3.0以上打开设置界面,也可以直接用ACTION_WIRELESS_SETTINGS打开到wifi界面 startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); } else { startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS)); } 8、Android 8.0 获取 wifi 的 ssid 之前用上面6的方法可以完美的获取wifif设备的 ssid 但是不能显示 ssid 即用户名 ConnectivityManager manager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); assert manager != null; NetworkInfo info = manager.getActiveNetworkInfo(); if (info != null && info.isConnected()) { String wifiSsid = info.getExtraInfo().substring(1, info.getExtraInfo().length() - 1).trim(); }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册