Articles of 数据绑定

高阶函数问题作为绑定适配器

我正在尝试使用Kotlin / Android数据绑定尝试将函数作为绑定适配器中的参数。 此示例代码抛出e: error: cannot generate view binders java.lang.StackOverflowError时e: error: cannot generate view binders java.lang.StackOverflowError ,而日志中没有其他有用信息。 这是我的绑定适配器: @JvmStatic @BindingAdapter(“onDelayedClick”) fun onDelayedClick(view: View, function: () -> Unit) { // TODO: Do something } XML: viewModel.testFunction()}”/> 我的ViewModel中的方法和方法: fun testFunction() = Unit 我一直在努力解决这个问题,而且我尝试过的任何工作都没有,所以任何帮助都会受到赞赏。

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

我的activity类中有一个ObservableBoolean字段,它绑定到我的ToggleButton的“checked”属性,如下所示: android:checked=”@{activity.editing}” 我希望这会在按钮和布尔值之间创建一个双向关系,但它只会从字段到按钮进行更改,而不是其他方式。 我做错了什么,或者这不在Android DataBinding的范围内?

在Android数据绑定更新后,Edittext游标重置为左侧

我正在尝试新的Android数据绑定库(1.0-rc1) ,我创建了一个带有三个字符串字段(名称,电子邮件和年龄)的User对象,并将它们链接到我的布局中的3个EditTexts。 在第一个字段(名称)上放置了一个TextWatcher 。 一切似乎都运作良好。 我通过在允许它调用setName之前检查文本是否不同来阻止名称字段中的notifyPropertyChanged循环。 问题是,每次输入名称字段时,光标会在每个字符后重置为EditText的左侧。 我搜索了一个解决方案但大多数光标问题的修复建议说要抓取对EditText的引用并手动调整光标位置。 但是我想避免这样做,因为我需要在EditText中findViewByID,而Data Binding的目的是试图避免这样做。 感谢您的帮助。 我的布局看起来像这样: 我的用户对象如下所示: import android.databinding.BaseObservable; import android.databinding.Bindable; import android.text.Editable; import android.text.TextWatcher; public class User extends BaseObservable { private String name; private String email; private String age; public User(String name, String email, String age) { this.name = name; this.email = email; this.age = age; } public […]

Android – 如何将ListView绑定到自定义对象的集合?

我有一个叫做PhoneContact的类有3个属性: Title , Description和PhoneNumber 如果我有这些的集合,我将如何将这些绑定到包含每个属性的TextView的ListView ?

在android错误中使用数据绑定:package *。* .databinding不存在

我正在尝试在Android应用程序中实现数据绑定。 这是我正在建立的链接。 即使在完成所有必要的实现之后,我在gradle-build中遇到以下错误: 错误:包com.example.satpracticeapp.databinding不存在。 (这个包是我在MainActivity.java文件中导入的)我试过这个 (数据绑定编译器),但它不起作用。 问题是我已经使用数据绑定成功尝试了一个hello-world应用程序并且它可以工作。 但是,当我尝试在几周前制作的应用程序中实现它时,我得到了上面提到的错误。 在搜索解决方案时,我将gradle文件从我成功的hello world应用程序复制粘贴到我的旧应用程序 – 这也没有成功。 这是我的app level build.gradle apply plugin: ‘com.android.application’ android { compileSdkVersion 23 buildToolsVersion “23.0.2” defaultConfig { applicationId “com.example.satpracticeapp” minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName “1.0” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } dataBinding { enabled = true } } […]

使用数组列表的Android Spinner数据绑定

我有一个像这样的数组列表: private ArrayList Artist_Result = new ArrayList(); 此Location类有两个属性: id和location 。 我需要将我的ArrayList绑定到微调器。 我这样试过: Spinner s = (Spinner) findViewById(R.id.SpinnerSpcial); ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, Artist_Result); s.setAdapter(adapter); 但是,它显示了对象的hex值。 所以我想我必须设置显示该微调控制器的文本和值。

Android数据绑定不适用于属性

我正在尝试使用自定义视图的数据绑定(George Mount 在此处展示的可能用法)。 无法想象在没有标记的情况下构建复合视图。 但是,在这种情况下,数据绑定失败: MyCompoundView类: public class MyCompoundView extends RelativeLayout { MyCompoundViewBinding binding; public MyCompoundView (Context context, AttributeSet attrs) { super(context, attrs); init(context); } private void init(Context context){ LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); binding = MyCompoundViewBinding.inflate(inflater, this, true); } my_compound_view.xml :by app:isGone=”@{!data.isViewVisible}”我希望控制整个复合视图的可见性 编译器错误: Error:(13) No resource identifier found for attribute ‘isGone’ in package ‘com.example’ […]

错误:数据绑定尚不支持Jack构建

我正在实现DataBinding ,它工作得很完美,但它不允许我使用jackOptions 。 它抛出错误Data Binding does not support Jack builds yet时Data Binding does not support Jack builds yet 。 这是我的build.gradle android { defaultConfig { … dataBinding { enabled true } jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }

Android数据绑定:“方法引用使用’。’ 已被弃用“

在我的应用程序中使用数据绑定时,我在编译时收到以下警告: Warning:Method references using ‘.’ is deprecated. Instead of ‘handler.onItemClick’, use ‘handler::onItemClick’ 请参阅下面的XML。 请注意:来自条件声明 相当简单的消息,直到我改变’。’ 至 ‘::’。 android:onClick=”@{!active ? handler::onItemClick : null}” 由于onItemClick在条件语句中,它似乎将两个::’中的第一个解释为条件的’else’语句。 在第二个’:’,我收到错误: expected, got ‘:’ 编辑:正如@CommonsWare在评论中建议的那样,将语句反转为”@{active ? null : handler::onItemClick}”也无济于事,显示了类似的错误(参见注释) 编辑2:显然,当剥离条件语句时,留下”@{handler::onItemClick}” ,它仍然会出错: ‘!=’, ‘%’, ‘*’, ‘+’, ‘,’, ‘-‘, ‘.’, ‘/’, <, <<, ‘, ‘>=’, ‘>>’, ‘>>>’ or ‘[‘ expected, got ‘:’使用点符号,编译时仍然会发出警告 有没有办法逃避这些::’s,所以它被正确解释?

自定义视图上的自定义侦听器的数据绑定

我正在尝试使用新的Android数据绑定库绑定自定义视图上的事件,但遇到了问题。 这是我的自定义视图的相关部分: public class SuperCustomView extends FrameLayout { private OnToggleListener mToggleListener; public interface OnToggleListener { void onToggle(boolean switchPosition); } public void setOnToggleListener(OnToggleListener listener) { mToggleListener = listener; } …/… } 我正在尝试使用此自定义视图并使用以下内容绑定onToggle事件: toggleStrokeLimitation是控制器上的一种方法: public void toggleStrokeLimitation(boolean switchPosition) { maxStrokeEnabled.set(switchPosition); } 编译时出现此错误: > java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Cannot find the setter for […]