1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5    >
 6
 7     <TextView
 8         android:layout_width="wrap_content"
 9         android:layout_height="wrap_content"
10         android:text="Hello World!"
11  />
12
13 </LinearLayout>

1.反例:像这个布局文件,如果要使用DataBinding的话,最外层要改成layout布局的,

但是我以为它最终要改成layout,所以我事先在加入complie和enabled代码前直接改成layout,

    //DataBindingcompile "com.jakewharton.rxbinding:rxbinding:0.4.0"compile "com.jakewharton.rxbinding:rxbinding-design:0.4.0"

    compileSdkVersion 24buildToolsVersion "24.0.0"dataBinding {enabled = true}
}

导致在在加入complie和enabled代码后,点击右上角的Sync Now,一直报错

C:\android\ASWorkSpace\HighlyTechnical\tenical\build\intermediates\data-binding-layout-out\debug\layout\activity_main.xml
Error:(11) Error parsing XML: duplicate attribute
Error:Execution failed for task ':tenical:processDebugResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt
Information:BUILD FAILED

莫名奇妙的错误。

搞了半天都不知道是什么原因,

原来是我们要将根布局变成layout,还要去掉根布局的width和height

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <layout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     >
 5     <RelativeLayout
 6         android:layout_width="match_parent"
 7         android:layout_height="match_parent">
 8     <TextView
 9         android:id="@+id/tv_test"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:text="Hello World!" />
13     </RelativeLayout>
14
15 </layout>

2.

(1)获取到的DataBinding对象,是根据布局文件命名的

ListItemHomeBinding binding = DataBindingUtil.inflate(LayoutInflater.from(UIUtils.getContext()), R.layout.list_item_home, parent, false);

而布局文件要先实现根布局为layout,

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <layout xmlns:android="http://schemas.android.com/apk/res/android"
 3     >
 4 <data>
 5     <variable
 6         name="ListBean"
 7         type="com.weizh_000.googleplay.domain.HomeBean.ListBean"/>
 8
 9 </data>
10
11 <TextView
12     android:text="@{ListBean.downloadUrl}"
13     android:layout_width="match_parent"
14     android:layout_height="wrap_content"
15     android:textColor="#000"
16     android:id="@+id/textView" />
17 </layout>

然后build一遍,对象名就出来了,但是按ctrl+2+L出来的不是这个名,是

ViewDataBinding,直接用这个也可以,或者自己手动敲对象名。

(2)不仅对象名会创建,对象方法也会被创建。对象方法名是根据data标签中
variable标签的name创建的,例如上面布局文件中的name为ListBean,那么就会创建一个方法名字为setListBean
 1         @Override
 2         public View getView(int position, View convertView, ViewGroup parent) {
 3             ListItemHomeBinding binding;
 4             if (convertView == null) {
 5                 binding = DataBindingUtil.inflate(LayoutInflater.from(UIUtils.getContext()), R.layout.list_item_home, parent, false);
 6                 convertView = binding.getRoot();
 7                 convertView.setTag(binding);
 8             } else {
 9                 binding = (ListItemHomeBinding) convertView.getTag();
10             }
11
12             binding.setListBean(getItem(position)); 13             return convertView; 14 }

这是ListView的Adapter中的getView方法,同时也展示了如何在ListView中使用DataBinding。

3.要有data的标签,而data的标签又要有一个类名,所以又得创建一个类,通常这个类是javabean类

转载于:https://www.cnblogs.com/johnsonwei/p/5727771.html

DataBinding注意事项Error parsing XML: duplicate attribute以及如何在listview中使用DataBinding...相关推荐

  1. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: jav

    报错:Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: jav 原因:1.在对应的xml文件里面 #A# ...

  2. Error parsing XML: not well-formed (invalid token)

    今天打开项目,居然报错??? 什么情况,见到报错是这个:Error parsing XML: not well-formed (invalid token) 代码是这样的: 什么鬼,从来没见过,然后网 ...

  3. com.badlogic.gdx.utils.SerializationException: Error parsing XML on line 1 near

    出错提示: com.badlogic.gdx.utils.SerializationException: Error parsing XML on line 1 near: puzzle/puz.xm ...

  4. error:Error parsing XML:unbound prefix

    今天写这段XML的时候总是提示这个错误. 解决方法是:在PreferenceScreen后面加一段:xmlns:android="http://schemas.android.com/apk ...

  5. error parsing xml:unbound prefix

    就几行代码 , 就来个这个错误 ,就按照之前说找错的方法去找, 发现不好使就是不好使, 所以就上网找,找来找去都说是有的地方写错了,但是我没有地方写错啊. 于是再找还是说有的地方写错了,看来文件名的错 ...

  6. matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)

    matlab分析xml文件 Today we will learn how to read the XML file in Java. We will also learn how to parse ...

  7. Android: AAPT: error: duplicate attribute.

    Android: AAPT: error: duplicate attribute. 在使用 Android 的数据绑定时, 需要使用 <layout> 标签来包裹这个布局才能生成对应的数 ...

  8. 安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案

    安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案 参考文章: (1)安卓虚拟机启动后报错: 类似 SDK M ...

  9. 6.mybatis异常:SQL Mapper Configuration,Error parsing Mapper XML,Could not resolve type alias

    6.mybatis异常:SQL Mapper Configuration,Error parsing Mapper XML,Could not resolve type alias 参考文章: (1) ...

最新文章

  1. Hystrix的一个坑,queue中的run方法没有被执行?
  2. 互斥锁在python中的应用
  3. WebApi单元测试记录
  4. java设置类的字符格式_java类---与格式化相关的类
  5. mysql锁表查询_Mysql upate 更新锁表还是锁行测试
  6. javascript必须懂之冒泡事件
  7. 影响大数据和分析的5大趋势
  8. 3D变换矩阵的分解公式
  9. 计算机系统 基础知识点汇总,超全!!!
  10. 计算机毕业设计之流浪宠物管理系统
  11. iOS动画之CAAnimation
  12. 基于Python的Bangumi中动画片排行榜数据可视化分析
  13. 系统分析师成长之路 转
  14. html页面缩小图片缩小,如何缩小html页面中的图片大小?
  15. ipad上的游戏服务器无响应,教你 game center无法连接服务器解决办法及iOS9.3.2公测版已修复GameCenter无响应bug...
  16. 强化练习200题(二)正题:123
  17. 统计学习第十四周-方差分析
  18. 条形码EAN-13码和EAN-8码的原理
  19. 求逆序数-第12届蓝桥杯Scratch省赛3真题第3题
  20. 网易邮箱登录页面html5布局,css实现tab效果仿163邮箱样式

热门文章

  1. part01.04 事件
  2. bzoj1003题解
  3. 一个渣渣的随页面滚动改变定位的代码
  4. windows下面使用nssm设置新的服务实现开机自启等
  5. maven使用出现的错误
  6. 压缩和解压文件:tar gzip bzip2 compress(转)
  7. 自我训练——时间控制能力(四)
  8. Visual C++ MFC/ATL开发-提高篇
  9. 3.eclipse对mysql云数据库编程增删改查
  10. 干货:用Python进行数据清洗,这7种方法你一定要掌握