告别findView和ButterKnife

作者: ditclear | 来源:发表于2017-04-16 14:48 被阅读4816次

Image.png

最后

这只是最基础的绑定view的例子以及使用泛型和DataBinding来构造我们的基类,只是写了一个BaseActivity,Fragment同样的道理。DataBinding当然不止这些,还能简化RecyclerView的操作,告别反复的自定义Adapter,推荐大帅的DataBingding入门指南和用于绑定的RecyclerView的库DataBindingAdapter

项目地址:https://github.com/ditclear/BaseViewBinding

ending...

相关文章

网友评论

  • 孤独的探索号:很看好DatBinding,一直关注着,最近打算抽个时间做ZBLibrary for DataBinding😁
    https://github.com/TommyLemon/Android-ZBLibrary
  • ceb96b1591a1:刚刚在项目中使用,上周已经上线。优点很多,gson将数据反序列化成实体直接set进去就好,双向绑定是那些有几十个字段得表单的克星,gson将实体转成json直接post上去就好,缺点就是容易64k,对电脑设备有一定要求。
  • 心田祭思:不喜欢,界面就是界面,非要搞逻辑上去,虽然简单了,可是这样好吗?单一职责,我就做界面,不要逻辑
    心田祭思:@yunhen "@{user.displayName!=null?user.displayName:user.lastName}"
    心田祭思:@yunhen 你那个data不是放数据进去吗?还可以写好多逻辑,比如三目运算,控件隐藏显示
    yunhen::sweat: 大兄弟啊 你用过没 ,并不是把界面里加啦逻辑,布局还是布局,没什么逻辑,逻辑在model里啊
  • 9711922c6b29:只是做布局展示可以用数据绑定,复杂点的还是拿到id处理比较好。虽然提供了adapter这种方式不过实际开发不如通过id拿到原始控件方便
  • JerryShen:缺点:
    自动补全太差了 希望之后的IDE支持会更好
    报错定位有问题 一个binding报错 所有bingding都报错 还不知道错在哪
    有些语法跟java不一样,像React可以直接在html插js代码才是真方便
    把databinding放在library里真是各种坑

    优点;
    省代码,比MVP好用


    利弊一半一半吧
    SunnySky_:报错可在最后一行查看报错信息的
  • kaeronlyyou:好鸡肋,还不如ButterKnife好用
    OneBelowZero:@kaeronlyyou 配和RxJava 简直爽翻天
    kaeronlyyou:@OneBelowZero 额,可能我好没体会到你说的那个好处吧,我就用过一次
    OneBelowZero:胡说 ButterKnife要写一堆注解 编译总是容易R文件找不到。
  • 2a40952c8694:谢谢介绍了个牛逼的高级货
  • Leo_Zheng:我们项目这个大版本接入了,有个大问题就是其他原因造成的编译失败报错都报在databinding上了,非常干扰错误检索
    ditclear:@Leo_Zheng 表示已经使用了半年多,做了2个项目,一个项目还是以libary的形式,该踩的坑大都踩了,所以分享一下心得,这篇文章也是写了一下最基础的东西,目的也是为了让更多人知道databinding
    Leo_Zheng:@ditclear 额,表示你应该没有实际应用过吧,还是停留在demo的情况下。。。大的项目用了以后相信我,一堆binding丢失直接掩盖了真实的错误信息
    ditclear:多看Gradle Console的输出,不要无脑run 在terminal运行./gradlew clean assembleDebug --debug
    你会看到你想要的,一般运行./gradlew assembleDebug 就能定位错误了,还能避免卡死
  • 我才是张雷:<data></data>这个是干嘛的,小白请解答:smiley:
    我才是张雷:@ditclear 感谢楼主
    ditclear:用于在xml文件中绑定数据,参考这篇文章 http://blog.zhaiyifan.cn/2016/06/16/android-new-project-from-0-p7/
  • tatsuyuki:include 也能用binding喔。
    只需要你給include 一個 id既可。
    另外include 的view 裡面也要用<layout>包起來。
    這部分在當初DataBinding還是測試階段時我就有提issue給Android DataBinding的團隊了。
    當時過沒多久就馬上加上這個功能。
    這邊順便宣傳一下,有需求都可以上android issue tracker反應。
    通常都能得到很不錯的回應,尤其是還在測試階段的東西。
    常常一反應就馬上加上去囉。
    ditclear:@码农小章 嗯,我懂你的 意思,我的意思是说我的这种写法,在基类里findviewbyid 比较简单,也比较适用,因为不是所有的layout布局里不是都有toolbar、recyclerView和刷新布局,而我需要在基类里对他们初始化
    4f02f1f15e16: @ditclear 基类也早已不需要写id了,include是可以直接把对象传递过去,app:对象在include进来那个文件的名字=“@{对象}”,有多少个就写多少个,轻松愉快。id我们只有在像相对布局那种需要用来定位的才会用到,其他时候>99%的情况已经没有id了。
    ditclear:确实没错,不过由于include的布局可能有,也可能没有,比如toolbar有些布局就不用,所以我在基类里还是使用的findView的形式。谢谢指正。

本文标题:告别findView和ButterKnife

本文链接:https://www.haomeiwen.com/subject/xqyaattx.html