尝试为int创建一个@BindingConversion时遇到一个神秘的问题.
以下代码适用于浮点数到字符串:
XML:
...
<variable
name="myViewModel"
type="... .SomeModel" />
...
<TextView
style="@style/StyleStuff"
android:text="@{myViewModel.number}" />
Run Code Online (Sandbox Code Playgroud)
码:
public class SomeModel {
public ObservableFloat number = new ObservableFloat();
}
Run Code Online (Sandbox Code Playgroud)
和设置:
viewModel.number.set(3.14f);
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试对字符串进行同样的操作,我会崩溃.
public ObservableInt number = new ObservableInt();
Run Code Online (Sandbox Code Playgroud)
同
viewModel.number.set(42);
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
FATAL EXCEPTION: main
Process: ...myapplication, PID: 14311
android.content.res.Resources$NotFoundException: String resource ID #0xfa0
at android.content.res.Resources.getText(Resources.java:1123)
at android.support.v7.widget.ResourcesWrapper.getText(ResourcesWrapper.java:52)
at android.widget.TextView.setText(TextView.java:4816)
at ...executeBindings(ActivityAdaptersBinding.java:336)
at android.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:355)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
在Yigit博伊尔和乔治·芒特对Android的数据绑定的谈话,他们说明它是多么容易绑定到TextWatcher的onTextChanged(在13:41).在按钮上.他们的幻灯片错了吗?首先,ButtonView没有onTextChanged属性.它既没有setOnTextChanged方法.也没有EditText.但他们都有addTextChangedListener一个TextWatcher输入.
那他们在说什么呢?他们是如何做到的呢?他们的示例代码无法编译,但会出现此错误:
Error:(17) No resource identifier found for attribute 'onTextChanged' in package 'android'
Run Code Online (Sandbox Code Playgroud)
如何使用Android Databinding框架绑定到任何View或特别是EditText上的"Text Changed Event"?
我在使用Integer数据类型实现双向绑定时遇到了一些问题.
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 = age;
}
public int getAge() {
return this.age;
}
}
Run Code Online (Sandbox Code Playgroud)
XML:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data class="UserDataBinding">
<variable
name="user"
type="com.databinding.model.User" />
</data>
<LinearLayout …Run Code Online (Sandbox Code Playgroud) 当我尝试运行我的应用程序时出现以下错误:
Error:Execution failed for task ':app:compileDevelopmentDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Could not find accessor java.lang.String.giftRecipientName redacted.xml loc:182:63 - 182:93 ****\ data binding error ****
Run Code Online (Sandbox Code Playgroud)
我有一个Order对象,如下所示:
public class Order {
public Address address;
// unrelated fields and methods
}
Run Code Online (Sandbox Code Playgroud)
嵌套的Address对象如下所示:
public class Address {
public String addressLine1;
public String addressLine2;
public String giftRecipientName;
public Boolean isGift;
}
Run Code Online (Sandbox Code Playgroud)
在我的.xml中,我正在执行以下操作:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="order" type="example.redacted.models.Order"/>
</data>
// widgets and whatnot
<TextView
android:id="@+id/gift_recipientTV"
android:layout_column="1"
android:layout_weight="1"
android:layout_width="0dp"
android:textStyle="bold" …Run Code Online (Sandbox Code Playgroud)