美文网首页
安卓Databinding入门浅坑

安卓Databinding入门浅坑

作者: 天下第九九八十一 | 来源:发表于2020-07-23 19:02 被阅读0次

听说Databinding比findViewById的效率要高,决定试试,发现俩坑:


门栏

启用Databinding只需要gradle文件开启databinding即可。gradle会自动添加相关的工具链、运行时。
android { buildFeatures { dataBinding{ enabled true } } }

在layout中只需将原来的layout用一层<layout></layout>包裹起来:

test_layout.layout

<layout>
……
</layout>

然后Java端就可以这样调用:

TestLayoutBinding viewHolderData = TestLayoutBinding .inflate(getLayoutInflater(), parent, false);

配合recyclerView:

    class ViewDataHolder<T extends ViewDataBinding> extends RecyclerView.ViewHolder{
        T data;
        ViewDataHolder(T data){
            super(data.getRoot());
            this.data = data;
        }
    }

    public ViewDataHolder<TestLayoutBinding> onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        TestLayoutBinding vh = TestLayoutBinding.inflate(getLayoutInflater(), parent, false);
        return new ViewDataHolder(vh);
    }

    public void onBindViewHolder(@NonNull ViewDataHolder<TestLayoutBinding> viewHolder, int position) {
        TestLayoutBinding viewHolderData = viewHolder.data;                     
        ……
    }

其中 TestLayoutBinding 是根据layout文件名自动生成的类名,再比如 activity_main.layout 生成的类就是 ActivityMainBinding.java:

ActivityMainBinding UIData = DataBindingUtil.setContentView(this, R.layout.activity_main);

生成的类路径位于:

project\app\build\generated\data_binding_base_class_source_out\debug\out\包\名\databinding\

以上便是用DataBinding替代findViewById的方法。坑点在于,有不少过时的教程,抟聚浮云。


冲突

databinding工具链包含了com.google.common、com.google.code.gson等包,可能会引发重复类冲突。

比如本人在一个annotationProcesser模块中引入了google closure compiler,用于编译代码中包含的一些Javascript字符串。但此包内含了gson的一些类。

坑点在于,当以annotationProcesser间接引入google closure compiler的时候,Android Studio根本不告诉我是类冲突,更别说是哪个模块哪个引用引发了问题,它它它仅仅是告诉我找不到gson这个类。改成以api引入后,它才开始抱怨类冲突。

解决:winrar打开jar包,删除其中包含gson代码的子文件夹。

相关文章

  • 安卓Databinding入门浅坑

    听说Databinding比findViewById的效率要高,决定试试,发现俩坑: 门栏 启用Databindi...

  • 安卓开发技术分享

    先占个坑,后面一点点把安卓开发相关的知识系统的整理上来。 一、安卓开发入门 开发环境搭建:https://blog...

  • Android-DataBinding-BindingAdapt

    接着上篇MonkeyLei:Android-androidx-DataBinding入门快速上手总结(有点小坑,暂...

  • 安卓DataBinding学习

    DataBinding支持所有的android sdk,最低支持android2.1(API7)。使用DataBi...

  • 安卓开发零基础入门系列

    本文由安卓开发007出品 ## 1.1 安卓发展历程## 1.2 安卓开发前景展望## 1.3 安卓开发入门之安装...

  • 安卓自定义View-画圆

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓动画样例-圆环变多变少

    效果图 代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开发工...

  • 安卓动画样例-放大缩小

    效果图 实现代码 安卓开发入门教程系列汇总 安卓发展历程及前景 安卓发展历程 安卓开发前景展望 初探安卓 安装开...

  • MVVM

    DataBinding基础用法 DataBinding入门 Android数据绑定框架DataBinding,堪称...

  • RobotFramework学习笔记二

    robotframework +appium安卓自动化测试入门 安卓开发环境搭建请参考: https://www....

网友评论

      本文标题:安卓Databinding入门浅坑

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