You are probably not going to use the instance method for BindingAdapter.
, DataBindingComponent, Binding , .
: DataBindingComponent . , :
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<data class="PopularMoviesBinding">
<variable name="pmvm"
type="com.hartyandi.oviesm.modelviews.PopularMoviesViewModel"/>
<variable name="picasso" type="com.whatever.Picasso"/>
</data>
<ImageView
app:imageUrl="@{pmvm.imageUrl}"
app:picasso="@{picasso}"
... />
</ImageView>
</layout>
BindingAdapter:
@BindingAdapter({"imageUrl", "picasso"})
public static void setImageUrl(ImageView view, String poserPath, Picasso picasso){
picasso.with(view.getContext()).load("http://image.tmdb.org/t/p/w185"+ poserPath).into(view);
}
, setImageUrl static.
, Picasso ViewModel, , :
<ImageView
app:imageUrl="@{pmvm.imageUrl}"
app:picasso="@{pmvm.picasso}"
... />
ViewModel:
public Picasso getPicasso() { return this.getPicasso; }
, DataBindingComponent. BindingAdapter , . :
public class MyDataBindingComponent implements DataBindingComponent {
public PopularMoviesViewModel getPopularMoviesViewModel() {
return whateverIDoToCreateOrGetThisBindingAdapterInstance();
}
}
:
PopularMoviesBinding popularMoviesBinding =
DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),
R.layout.popular_movies_gridview_row, parent,false,
new MyDataBindingComponent());