I'm trying to make a string comparison with android XML data binding, but I'm not having the right results.
Evaluating my expression in code, I try notice.action == "continue"
and this is false. And in data binding, this is false too, of course.
android:textColor='@{ notice.action == "continue" ? @color/enabledPurple : @color/disabledGray}'
It only gets true when I do notice.action.equals("continue")
by code. This is the intended behavior. My problem is that I can't accomplish this with data binding expressions, because it won't run methods like equals
. What can I do to replace the comparison expression with another one that works?
I'm using this guide.
Edit: I was wrong, methods are allowed in XML. Did it this way:
android:textColor='@{ notice.action.equals("continue") ? @color/enabledPurple : @color/disabledGray}'
There is no need to import the String class into your layout file. To check whether two strings have equal value or not equals() method should be used. = is used to check the whether the two strings refer to the same reference object or not.
In order to compare two strings, we have to use a method called “equals”. Type the following into the parentheses of your If Statement: car1. equals() . In the parentheses of THIS code, write car2 as a parameter.
Android Jetpack is a set of libraries designed to help developers follow best practices and create code quickly and simply. The Data Binding Library is one of them. Data Binding allows you to effortlessly communicate across views and data sources.
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.
It can be do in two way :-
1. First way inside xml :-
android:textColor="@{notice.action.equals(`continue`) ? @color/enabledPurple : @color/disabledGray }"
2. Second way (programatically) Inside xml :-
app:setColor="@{notice.action}" inside activity or custom class : - @BindingAdapter("setColor") public static void setTextColor(TextView textView, String s) { Context context = textView.getContext(); textView.setTextColor(s.equals("continue") ? context.getResources().getColor(R.color.enabledPurple) : context.getResources().getColor(R.color.disabledGray)); }
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