Articles of android databinding

android数据绑定unit testing错误无法解析数据绑定编译器选项。 PARAMS:

当我尝试为我的kotlin android项目设置unit testing时,我遇到了以下错误。 以前有人遇到过这种问题吗? 这已被标记为官方错误跟踪器上的错误 FAILURE:构建因exception而失败。 *出了什么问题:任务执行失败’:app:compileDebugUnitTestJavaWithJavac’。 > java.lang.RuntimeException:无法解析数据绑定编译器选项。 参数:kapt.annotations:/Users/trevor/Dev/Android/workspace/gitlab-example/app/build/tmp/kapt/debugUnitTest/wrappers/annotations.debugUnitTest.txt kapt.kotlin.generated:/ Users / trevor / Dev / Android / workspace / gitlab-example / app / build / tmp / kapt / debugUnitTest / kotlinGenerated *尝试:使用–info或–debug选项运行以获得更多日志输出。 *exception是:org.gradle.api.tasks.TaskExecutionException:任务执行失败’:app:compileDebugUnitTestJavaWithJavac’。 在org.gradle上的org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)位于org.gradle.api.internal的org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)上的.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)位于org.gradle.api.internal.tasks.execution的org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46).tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) .skipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTas 位于org.gradle.exe。执行(CatchExceptionTaskExecuter.java:34)的orE.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker $ 1.execute(DefaultTaskGraphExecuter)中的kExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) .java:236)在org.gradle上的org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker $ 1.execute(DefaultTaskGraphExecuter.java:228)org.gradle.internal.Transformers $ 4.transform(Transformers.java:169)。 org.gradle.internal.progress.DefaultOperationExecutor.run(DefaultBuildOperationExecutor.java:61)中的internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute(DefaultTaskGraphExecuter。 java:228)org.gradle.execution.taskgraph.DefaultTaskGraphExecuter […]

Android绑定适配器传递多个参数会导致错误

我是Android Data Binding新手。 我正在学习本教程: 数据绑定库 。 我正在尝试使用接收多个参数的适配器。 这是我的代码: XML 绑定适配器类 public class ViewBindingAdapters extends BaseObservable { @BindingAdapter({“bind:url”, “bind:size”}) public static void loadImage(ImageView imageView, String url, int size) { if (!Strings.isNullOrEmpty(url)) { Picasso.with(imageView.getContext()).load(url).resize(size, size).centerCrop().into(imageView); } } …. } 但是我收到了这个错误: java.lang.RuntimeException:发现数据绑定错误。 **** /数据绑定错误****消息:在android.widget.ImageView上找不到参数types为java.lang.String的属性’app:url’的setter。 file:… li_image_item.xml loc:30:27 – 30:40 **** \ data binding error **** 有谁知道为什么? 提前致谢!

Android数据绑定和Kotlin

我正在将我的Android应用程序从Java转换为Kotlin。 它正常工作,除非我尝试转换使用Android数据绑定库的文件。 在这种情况下,Android Studio会在编译时抱怨未解析的引用: Error:(10, 44) Unresolved reference: AdapterHistoriesListBinding 其中AdapterHistoriesListBinding是应由数据绑定库生成的文件的名称。 它在Java中正常工作,所以我猜这是Kotlin的一个问题。 我使用的是Android Studio 2.0.0-beta6,Android Gradle Plugin 2.0.0-beta6和Kotlin 1.0。 有没有什么可以使数据绑定库与Kotlin一起工作?

如何将架构组件与Android上的数据绑定相结合?

我开发了基于android数据绑定库的应用程序: https : //developer.android.com/topic/libraries/data-binding/index.html class SignInViewModel extends BaseObservable { @Bindable public String getLogin() { return login; } @Bindable public String getPassword() { return password; } } 现在我想使用新库中的ViewModelProviders: https : //developer.android.com/topic/libraries/architecture/guide.html SignInViewModel signInViewModel = ViewModelProviders.of(this).get(SignInViewModel.class); 它如何结合? 任何想法? 或者应该结合这两个库? 编辑 我改为: class SignInViewModel extends ViewModel { public ObservableField login = new ObservableField(“”); public ObservableField password = new […]

什么是android数据绑定中的“DataBindingComponent”类?

我在官方API文档中看到了DataBindingComponent。 https://developer.android.com/reference/android/databinding/DataBindingUtil.html 在编译期间生成此接口以包含所有使用的实例BindingAdapter的getter。 当BindingAdapter是实例方法时,必须实例化实现该方法的类的实例。 这个接口将使用getter为每个类生成,其名称为get *,其中*是声明BindingAdapter类/接口的简单类名。 将通过向getter添加数字后缀来解析名称冲突。 也可以将此类的实例作为第一个parameter passing给static或实例BindingAdapters。 如果使用Dagger 2,开发人员应扩展此接口并将扩展接口注释为Component。 但是,我在Web中找不到此类的任何示例用法。 任何人都可以知道它是什么以及如何使用它。 我试着制作一些简单的代码并调试它以查看它是什么,但它在variables上显示了nullvariables。 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding binding= DataBindingUtil.setContentView(this,R.layout.activity_main); android.databinding.DataBindingComponent a = DataBindingUtil.getDefaultComponent(); setContentView(binding.getRoot()); }

使用Integertypes的Android双向绑定导致数据绑定不存在

我在使用Integer数据types实现双向绑定时遇到了一些问题。 public class User { private String firstName; private String lastName; private int age; public User() {} public void setFirstName(String firstName) { this.firstName = firstName; } public String getFirstName() { return this.firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getLastName() { return this.lastName; } public void setAge(int age) { this.age […]

Android数据绑定与自定义适配器

我正在尝试将Android的数据绑定function与自定义适配器和ListView一起使用。 我无法覆盖自定义适配器的getView方法: public class ChecksAdapter extends ArrayAdapter { public ChecksAdapter(Context context, ObservableList checks) { super(context, R.layout.check, checks); } @Override public View getView(int position, View convertView, ViewGroup parent) { CheckBinding binding = DataBindingUtil.inflate( LayoutInflater.from(getContext()), R.layout.check, parent, false); binding.setCheck(this.getItem(position)); // Return what? } } 所以我的问题是: 我在哪里可以获得我应该返回的View元素? 或者换句话说,如何将对象绑定到膨胀/转换后的视图? 使用数据绑定时如何重用convertView ? 这是实现这个的正确方法吗? ListViews上的指南不是很清楚 以下是本指南中ListViews的唯一参考: 如果您在ListView或RecyclerView适配器中使用数据绑定项,您可能更喜欢使用: ListItemBinding binding = ListItemBinding.inflate(layoutInflater, […]

将LiveData与数据绑定结合使用

随着Android体系结构组件的稳定,我开始将所有基本的ViewModel更新为ViewModel的新实现。 根据我的理解,建议使用LiveData来保存Model类,因为它可以更好地处理生命周期。 我喜欢使用Data Binding因为它使代码在Java / Kotlin方面更加清晰,并且不需要“观察”值更改来更新UI。 但是,如果Model (或ViewModel)扩展BaseObservable而LiveData不扩展,则使用Data Binding的布局仅监视数据更改。 我理解LiveData的主要目标之一LiveData编程方式观察和更新UI,但对于简单的更新, Data Binding非常有用。 这个问题已经报道过( GitHub和Stack Overflow ),并且首先说版本1.0会有它,现在据说这个function正在开发中。 为了同时使用LiveData和Data Binding ,我创建了一个非常简单的类实现,它扩展了BaseObservable : import android.arch.lifecycle.LiveData import android.arch.lifecycle.MutableLiveData import android.databinding.BaseObservable class ObservableMutableLiveData() : BaseObservable() { private var data: MutableLiveData = MutableLiveData() constructor(data: T) : this() { this.data.value = data } public fun set(value: T) { if (value != data.value) […]

无法在Android数据绑定中引用其他视图ID

我刚刚观看了高级数据绑定 – Google I / O 2016,并希望应用以下内容来减少在不同视图中使用的expression式的重复。 但我不能让它在我的情况下工作: 我得到了 错误:(426,39)标识符必须具有XML文件中的用户定义types。 btn_list缺少它 编辑: 我在同一个谈话中错过了一个重要的观点…视图ID是骆驼卡。

包含tag和dataBinding

我想使用include在同一视图中多次使用我的一个布局。 假设我有一个包含一些TextView的custom.xml 。 custom.xml : 我在parent.xml多次包含此布局: 现在我想将我的数据模型绑定到这个布局,但问题是我不知道如何将两个不同的数据模型绑定到layout1和layout2因为它们都是从一个布局(即custom.xml 。 据我所知,我可以在我的xml布局中添加此标记: 但我需要将两个不同的数据模型绑定到custom.xml 。 我的问题是如何在一个视图中多次包含布局并使用数据绑定将不同的数据传递给它们? 比如将数据传递给布局但不是将模型静态绑定到xml。 我也发现这个问题确实存在同样的问题但是由于数据绑定是在较新版本的android中发布的,我正在寻找一种方法来解决使用数据绑定的相同问题。 以下是我引用澄清的问题的一部分: 例如,我有一个精心设计的布局,我希望在我的视图中显示三次。 每个实例都需要不同的值。 由于include基本上是XML并将其粘贴到这里,我需要更强大的东西。