上个星期咧写了篇databinding的入门使用
[DataBinding绑定控件]http://www.jianshu.com/p/fd4060bfe927
因为我也是刚用,所以本来自己用就有很多坑,现在踩得头破血流了,开始补坑
android:text='@{"用户评价(" + mine.evalNum } '
首先是这一行代码,这样文字里面加参数
我看到Google的文档里面记得是外面单引号的,当然也有可能是我用错了单引号或者本来就不是单引号,只是类似单引号,结果就是到处找不到DataBinding这个类,这是因为你配置不正确所以导致编译不了,
所以外面要正常的双引号,然后还有个写法是
android:text="@{ '用户评价' +mine.evalNum}"
看到没用户评价那几个字用的是 ' 英文状态下的单引号,这样写一样GG
所以正确的是
android:text="@{
用户评价(+mine.evalNum}"
好吧我又孤陋寡闻了,死活打不出那个符号
那几个字要用 英文状态下键盘左上角那个符号才行
`
`
`
重要的事情写3遍,就是这个符号括起来,要不分分钟掉坑
然后再补个功能,关于include的
include还是不能找到控件,再吐槽一次太坑了
但是include里面是可以传输数据的
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="mine"
type="com.***.***.bean.***.***Bean"/>
</data>
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/mine_page_header"
bind:mine="@{mine}"/>
<include layout="@layout/mine_page_content"
bind:mine="@{mine}"/>
</android.support.design.widget.CoordinatorLayout>
</layout>
这样子就把mine的数据传输进去include里面了,当然include里面还要配置,话说很多文档都没写只告诉你要配置一遍,因为的确是配置一遍(···这话说的),事实就是里面的配置跟外面一样就好,但是没代码不放心,那行,上代码:
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="mine"
type="com.***.***.bean.***.***Bean"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/background_color">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{`用户评价(`+mine.evalNum+`)`}" //呐,就是这里这样就可以用了
android:drawableLeft="@mipmap/iconfont_pingjia"
android:drawablePadding="2dp"
android:drawableRight="@mipmap/down_open"
android:padding="8dp"
android:layout_marginTop="8dp"
android:background="@color/white"/>
</LinearLayout>
</layout>
好,include这里还有个坑,在头顶
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:bind="http://schemas.android.com/apk/res-auto"
这几行是自动生成的嘛
问题是正常会写LinearLayout这个先,然后再配置的嘛
所以经常这几行会有些在LinearLayout里面了,这样会导致整个databing编译失败,也是个大坑。
所以这些要放在layout里面,然后多余的,没用到的最好删掉,要不分分钟还是会掉坑。
最后还有个坑,怪我个人问题,也不怕丢脸了·····
<include layout="@layout/mine_page_content"
bing:mine="@{mine}"/>
就是传值进去的时候这样一眼看过去没啥问题,各种不报错,但是一编译就突突突的崩了,找了半天都没找到,结果是·····
唉我都不好意思说了
bind写成了bing,尼玛就一个字母,问题是
xmlns:bing="http://schemas.android.com/apk/res-auto"
这句居然也能导进去,我擦咧····
所以说啊,经常有时候不小心打错一个字母,整个程序崩了,还特么那么隐蔽,简直就是坑啊,说多了都是泪···
最后吐槽下:最近可能我写代码快了点,结果另外一个项目有个人走了,结果呢就是把我也塞进去了,现在两个项目同时开工,而且都是那么赶,表示压力山大,时间妥妥的不够用了,然后可能这几天写文章都会断断续续的了。
再吐槽下:最坑的就是在别人的项目上动工,再坑的就是你用的东西跟别人的还完全不一样,比如网络框架我找就用retrofit2+okhttp+rxjava+butterknife+mvp了,然而他还是xutils,调个接口都麻烦,代码还全部堆在activity里面,看着就头疼
最最后:retrofit2+okhttp+rxjava+butterknife+mvp这套东西用来快速开发简直不要太好用,虽然网上很多教程,等以后我有空了,也记录下,把代码分享出来,其实不难的,搭好框架就可刷刷刷的开用了,炒鸡方便~