Articles of android databinding

在使用Android数据绑定时,如何通过xml为自定义setter传递多个参数

假设我有一个自定义的setter方法,我需要两个参数: @BindingAdapter({"imageUrl", "placeholder"}) public static void loadImage(ImageView imageView, String imageUrl, Drawable drawable) { Picasso.with(imageView.getContext()).load(imageUrl).placeholder(drawable).into(imageView); } 什么对应的XML看起来像?

使用Android数据绑定,如何指定在Android Studio布局预览期间显示的虚拟(或“默认”)文本?

我可以指定一个string在Android工作室的布局预览中显示,例如一个TextView? (Lorem ipsum …) 能够在布局编辑器中看到一些文本是非常有帮助的,例如查看文本大小是否正确等。

我可以将错误消息绑定到TextInputLayout吗?

我想直接将错误消息绑定到android.support.design.widget.TextInputLayout 。 我找不到通过布局设置错误的方法。 这甚至有可能吗? 这是我想象的工作方式: <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data> <import type="android.view.View" /> <variable name="error" type="String" /> </data> <android.support.v7.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:errorEnabled="true" app:errorText="@{error}"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/username" android:inputType="textEmailAddress" /> </android.support.design.widget.TextInputLayout> </android.support.v7.widget.LinearLayoutCompat> </layout>

如何使用ToggleButton执行双向数据绑定?

我的活动类中有一个ObservableBoolean字段,它绑定到我的ToggleButton的“checked”属性,如下所示: android:checked="@{activity.editing}" 我希望这会创buildbutton和布尔之间的双向关系,但它只是从字段到button的变化,而不是其他方式。 我在做什么错误,或者这是不是在Android数据DataBinding的范围?

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

我有一个与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数据绑定xml重复属性

我最近开始开发一个使用数据绑定的android应用程序。 我现在的问题是,我无法运行的应用程序,因为这个错误: Error:(10) Error parsing XML: duplicate attribute 在使用数据绑定的每个文件中发生错误(我正在使用片段)。 我现在search了3个小时,找不到解决scheme。 的build.gradle: apply plugin: 'com.android.application' android { dexOptions { preDexLibraries = false javaMaxHeapSize "2g" } compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "at.blacktasty.schooltoolmobile" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } dataBinding […]

Android数据绑定,不能生成视图绑定

我正在使用android数据绑定库,我将build.gradle的依赖项设置为: classpath 'com.android.tools.build:gradle:1.3.0' classpath "com.android.databinding:dataBinder:1.0-rc4" 我得到了这些错误,检查了几个线索,但不知道是什么原因造成的,因为它太抽象了,不知道它是我的xml文件中缺less的variables,还是我的viewmodel中缺less一个函数。 任何小费? 谢谢 Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > java.lang.RuntimeException: failure, see logs for details. cannot generate view binders java.lang.NullPointerException at android.databinding.tool.reflection.ModelAnalyzer.loadClassErasure(ModelAnalyzer.java:302) at android.databinding.tool.reflection.ModelAnalyzer.getObservableFieldTypes(ModelAnalyzer.java:288) at android.databinding.tool.reflection.ModelClass.isObservableField(ModelClass.java:194) at android.databinding.tool.expr.FieldAccessExpr.resolveType(FieldAccessExpr.java:232) at android.databinding.tool.expr.Expr.getResolvedType(Expr.java:308) at android.databinding.tool.BindingTarget.resolveMultiSetters(BindingTarget.java:140) at android.databinding.tool.LayoutBinder.<init>(LayoutBinder.java:210) at android.databinding.tool.DataBinder.<init>(DataBinder.java:49) at android.databinding.tool.CompilerChef.ensureDataBinder(CompilerChef.java:52) at android.databinding.tool.CompilerChef.sealModels(CompilerChef.java:84) at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:123) at android.databinding.annotationprocessor.ProcessExpressions.generateBinders(ProcessExpressions.java:93) at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:67) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:144) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:129) […]

DataBinding是否会干扰本地化活动?

TL; DR 我有一个支持多种语言的应用程序。 尽pipe使用了所有常用的本地化方法,但仍有一项活动未被翻译。 这是应用程序中唯一充分利用DataBinding Activity。 完整的解释 我有一个使用DataBinding的Activity 。 所以基本上,该活动的整个XML布局被封装在<layout>标签中。 这是我膨胀的观点,并获得约束力: SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity); 在XML有许多TextViews以这种方式设置文本: … android:text="@string/<name of a string>" … 我们为用户提供预定义的语言选项并设置应用程序的语言环境 Locale.setDefault(new Locale("<language name>")); 在英语区域,一切正常。 当应用程序处于不同的区域设置思路时,所讨论的活动中的string仍然以英语显示 – 即使这些string已被翻译成适当的语言,并且位于应用程序其余部分抓取的相同string文件中string从。 在该活动开始之前,应用程序没问题 – 活动开始后我退出,应用程序恢复为英语区域设置,直到它被杀死并重新启动。 如果该活动从未打开过,则应用程序按预期运行。 有没有人有任何想法可能造成这种情况? 谢谢。

Android – 带有偏好活动的DataBinding

我build立了XML中的数据绑定 ,但是当我去偏好活动来实际设置绑定我不能。 数据绑定XML所在的文件称为preference.xml,所以我假设应该有一个名为PreferencesBinding的生成类,但是没有。 它应该不是自动生成的? 此外我的代码在preferenceActivity.java不会编译以下内容: Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PreferencesBinding binding = DataBindingUtil….. //what do put here ??? this is preferenceactivity not Activity Admin user = new Admin(true); binding.setUser(user);//this what i want to do addPreferencesFromResource(R.xml.preferences);//this would not be necessary if i can get dataBinding to work //..rest of code not important } […]

毕加索绑定适配器'连接泄漏'的消息

我正在使用绑定适配器在回收站视图中加载图像。 图像显示正常。 在快速滚动的同时,我注意到有时候我收到毕加索的“连接泄漏”信息。 这个问题来自死链图像, 在将第一对图像从屏幕上滚动出来之后 ,将我的所有图像url硬编码到指向任何位置的地方都不会产生错误。 W/OkHttpClient: A connection to https://s3-eu-west-1.amazonaws.com/ was leaked. Did you forget to close a response body? 代码基本上与此示例相同。 BindingUtils.kt object BindingUtils { @BindingAdapter("imageUrl") @JvmStatic fun setImageUrl(imageView: ImageView, url: String) { Picasso.with(imageView.context).load(url).into(imageView) } XML <ImageView android:id="@+id/imageview_merchant_background" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/primary" android:scaleType="centerCrop" app:imageUrl="@{viewModel.background}"/> gradle这个 implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion" implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion" implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion" implementation "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttpLoggingVersion" implementation "com.squareup.picasso:picasso:$rootProject.picassoVersion" […]