<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
/> </LinearLayout>

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

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

    //DataBinding
compile "com.jakewharton.rxbinding:rxbinding:0.4.0"
compile "com.jakewharton.rxbinding:rxbinding-design:0.4.0"
    compileSdkVersion 24
buildToolsVersion "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

 <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout> </layout>

2.

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

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

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

 <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
>
<data>
<variable
name="ListBean"
type="com.weizh_000.googleplay.domain.HomeBean.ListBean"/> </data> <TextView
android:text="@{ListBean.downloadUrl}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000"
android:id="@+id/textView" />
</layout>

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

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

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

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

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

DataBinding注意事项Error parsing XML: duplicate attribute以及如何在listview中使用DataBinding的更多相关文章

  1. activiti 发布异常 org.activiti.engine.ActivitiException: Error parsing XML

    三月 23, 2015 1:58:31 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() fo ...

  2. Android 编译错误——布局 Error parsing XML: not well-formed (invalid token)

    在修改了Android布局文件后,编译出现Error parsing XML: not well-formed (invalid token). 首先先排查xml文件的编码格式是否为UTF-8, &l ...

  3. Error parsing XML: junk after document element这样的错误 - CSDN博客

    很多开发者可能在编写XML布局文件时提示Error parsing XML: junk after document element这样的错误,这里Android123提示大家一般合法的XML文件只有 ...

  4. android studio 报 Error:(79) Error parsing XML: not well-formed (invalid token)

    android studio 报 Error:(79) Error parsing XML: not well-formed (invalid token) 我的原因是因为string 里面有< ...

  5. [Error] Error parsing XML: unbound prefix

    发生该错误的代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  6. Error parsing XML: not well-formed (invalid token) 报错+R文件消失解决的方法

    xml报错: 这个xml文件上右键source ->format 注意:res下的文件名称不能大写 R文件消失: 在攻克了其它问题的情况下(或者其它问题还没解决先凝视掉) 手动删除gen pro ...

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

    从网络上或别的文件复制粘贴进来的代码有隐含格式,可将内容先粘贴进记事本清除格式,再复制粘贴进工程文件,即可解决此问题 注:1. 要使工程文件全选清空, 2. 若粘贴后刷新仍无效果,可手动输入

  8. Android - Error parsing XML: unbound prefix

    概述 这个问题,虽然看起来不是问题,但是如果不知道的人,还会花点时间,有的人甚至重新安装ADT. 我一开始还以为是排版的问题(Layout),因为初学,弄来弄去,最好还是到网上搜. 其实就不是什么问题 ...

  9. Error parsing XML: not well-formed (invalid token) 报错

    鼠标右键选择Source然后再选Format 就可以解决此问题

随机推荐

  1. YaHoo Web优化的14条法则

    Web应用性能优化黄金法则:先优化前端程序(front-end)的性能,因为这是80%或以上的最终用户响应时间的花费所在. 法则1. 减少HTTP请求次数 80%的最终用户响应时间花在前端程序上,而其 ...

  2. mac中Eclipse的快捷键

    查看某个类:command + shift +T 快速查看源代码中方法: command + o 选中某个类,command + t:查看此类的父类和子类 如果要导入一个类所在的包名,可以选中这个类, ...

  3. windows禅道环境搭建

    zentao官网的几个网址 http://www.zentao.net/ http://www.zentao.net/article-view-79863.html   搭建环境需要下载两个文件 1) ...

  4. Spring线程池开发实战

    Spring线程池开发实战 作者:chszs,转载需注明. 作者博客主页:http://blog.csdn.net/chszs 本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然, ...

  5. iosNSMutableAttributedString 简单操作

    // 打印系统中所有字体的类型名字    NSArray *familyNames = [UIFont familyNames];    for(NSString *familyName in fam ...

  6. c语言-扑克牌小魔术

    /************************************* Copyright(C) 2004-2005 vision,math,NJU. File Name: guess_card ...

  7. 用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击)

    网上搜到的答案普遍是VBS无法实现,或者是要用第三方COM(ActiveX?)组件.我对第三方组件是很反感的,使用第三方组件毫无可移植性可言,因为别人的系统中不一定注册了这个组件.我的建议是,尽量不要 ...

  8. struct函数

    //今天老师叫用一个struct函数做一个函数指针循环 突然我都不知道struct函数怎么用了 害的我下去查了很多资料 第一个定义法: int fun1(){    struct student{   ...

  9. nginx优化缓冲缓存

    反向代理的一个问题是代理大量用户时会增加服务器进程的性能冲击影响.在大多数情况下,可以很大程度上能通过利用Nginx的缓冲和缓存功能减轻. 当代理到另一台服务器,两个不同的连接速度会影响客户的体验: ...

  10. Photoshop 钢笔 双窗口显示

    钢笔:两点成一线  两点:Photoshop 叫锚点 中间线叫做路径 路径变选区 Crtl+Enter 窗口 >>>排列>>> 双联垂直 两个文件同时移动: shi ...