I have a class that extends BaseObservable
, this class contains the double value
This is an example :
public class BindedValue extends BaseObservable {
public double value;
public TextWatcher setValue = new TextWatcherAdapter(){
@Override
public void afterTextChanged(Editable s) {
value = Double.parseDouble(s.toString());
}
};
}
Then I got xml
<data class="net.example.util.Value">
<variable
name="BindedValue"
type="net.makereal.makerealmaquette.domain.BindedValue"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:hint="Value"
android:addTextChangedListener="@{BindedValue.setValue}"
android:inputType="numberDecimal"
android:text="@{BindedValue.value}"/>
When I try to run or build the app I get this error :
Cannot find the setter for attribute 'android:text' with parameter type double on android.widget.EditText.
However when I change the type to int the app builds with no issue.
Is there a way to bind a double?
Yep, we don't use <layout> ViewBinding, because on DataBinding we must add that layout tag to generate Binding class and it's different with ViewBinding which automatically generates all layout to Binding class.
Stay organized with collections Save and categorize content based on your preferences. The @={} notation, which importantly includes the "=" sign, receives data changes to the property and listen to user updates at the same time. // Avoids infinite loops.
However when I change the type to int the app builds with now issue.
Yes, but it will fail at runtime. setText(int)
expects a string resource ID, not an arbitrary int
.
Is there way to bind double?
android:text="@{Double.toString(BindedValue.value)}"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With