Define your CheckableImageView in your layout
<com.milanix.view.CheckableImageView
android:id="@+id/ivLogo"
android:layout_width="60dp"
android:layout_height="60dp" />
After inflating your view in the code, attach an implementation
ivLogo.setOnUpdateImageListener(new CheckableImageView.OnUpdateImageListener() {
@Override
public void onUpdateImage(boolean isChecked) {
Glide.with(OrderConfigurationFragment.this.getContext()).load(isChecked ? checkedImageUrl : normalImageUrl).into(ivLogo);
}
});
Even better with lambdas:
ivLogo.setOnUpdateImageListener(isChecked -> Glide.with(getContext()).load(isChecked ? checkedImageUrl : normalImageUrl).into(ivLogo));
Or with a Databinding?
<com.milanix.view.CheckableImageView
android:id="@+id/ivLogo"
android:layout_width="60dp"
android:layout_height="60dp"
app:checkedImageUrl="..."
app:normalImageUrl="..."/>
And a BindingAdapter
/**
* Sets an image based on state to the given {@link CheckableImageView}
*
* @param view to set margin to
* @param checkedImageUrl image to set when checked
* @param normalImageUrl image to set when normal
*/
@BindingAdapter(value = {"checkedImageUrl", "normalImageUrl"})
public static void setImage(CheckableImageView view, String checkedImageUrl, String normalImageUrl) {
view.setOnUpdateImageListener(isChecked -> Glide.with(view.getContext()).load(isChecked ? checkedImageUrl : normalImageUrl).into(view));
}