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,

  1. //DataBinding
  2. compile "com.jakewharton.rxbinding:rxbinding:0.4.0"
  3. compile "com.jakewharton.rxbinding:rxbinding-design:0.4.0"
  1. compileSdkVersion 24
  2. buildToolsVersion "24.0.0"
  3. dataBinding {
  4. enabled = true
  5. }
  6. }

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

  1. C:\android\ASWorkSpace\HighlyTechnical\tenical\build\intermediates\data-binding-layout-out\debug\layout\activity_main.xml
  2. Error:(11) Error parsing XML: duplicate attribute
  3. Error:Execution failed for task ':tenical:processDebugResources'.
  4. > com.android.ide.common.process.ProcessException: Failed to execute aapt
  5. 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对象,是根据布局文件命名的

  1. 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出来的不是这个名,是

  1. ViewDataBinding,直接用这个也可以,或者自己手动敲对象名。
  2.  
  3. 2)不仅对象名会创建,对象方法也会被创建。对象方法名是根据data标签中
  1. variable标签的name创建的,例如上面布局文件中的nameListBean,那么就会创建一个方法名字为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));
    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. Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)

    将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下: DataTable dt=new DataTabl ...

  2. CSS传统布局之display属性+float属性+position属性

    这三个属性是传统网页布局中经常用到的属性. 读这篇文章之前,希望你对css布局模型已经有了一定的了解.因为本文的三个属性是和css三个布局模型紧密联系在一起的.因此,如若你并不了解,我推荐你先看一下c ...

  3. 使用HttpClient工具类测试Http接口

    一.httpClient模拟客户端 import java.util.ArrayList;import java.util.Iterator;import java.util.List;import ...

  4. 用shell获得hadoop中mapreduce任务运行结果的状态

    在近期的工作中,我需要用脚本来运行mapreduce,并且要判断运行的结果,根据结果来做下一步的动作. 开始我想到shell中获得上一条命令运行结果的方法,即判断"$?"的值 if ...

  5. linux常用服务软件搭建及使用技巧

    一.Webmin安装: Webmin 是一个基于浏览器的管理工具,可以应用于Linux 和其他一些平台,提供了可以完成很多管理和操作任务的图形化界面 •安装完成后,root 用户会被自动创建,密码为系 ...

  6. Chapter 1 Mr.Sherlock Holmes

    I took my degree of Doctor of Medicine in the University of London, and proceeded to Netley to go th ...

  7. LeetCode OJ 26. Remove Duplicates from Sorted Array

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  8. button的action属性如果有参数,必须加“:”

    比如: [bt addTarget:self action:@selector(shareButtonClickHandler:) …… 后面未写完 一开始我没加,就报错.

  9. 安卓OpenGL入门

    1.先用一个GLSurfaceView作为画布,然后自定义一个Renderer继承自Renderer,把这个自定义的Renderer通过setRenderer()设置给GLSurfaceView就可以 ...

  10. MULE-ET0 、 ET1、ET2、PT1、PT2

    设计验证阶段中的五个样车试制概念 骡子车( mule car ) ET0 第一轮设计工程样车试制 ET1 第二轮设计工程样车试制 ET2 第一轮产品工装样车试制 PT1 第二轮产品工装样车试制 PT2 ...