プロジェクトで@BindingAdapter
を機能させるのに苦労しています。
@BindingAdapter("imageUrl")
public static void setImageUrl(ImageView imageView, String url) {
Log.d("TEST","URL: " + url);
}
上記のコードは、ViewModelにどのように実装されているかを示しています。特にない。
<ImageView
Android:id="@+id/image_holder"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:scaleType="centerCrop"
Android:layout_below="@id/profile_container"
app:imageUrl="@{item.imageUrl}"
tools:src="@drawable/placeholder_image"/>
これは動作しません。名前空間アプリはバインドされていません。だから私は何が欠けています。次のことを試してみました https://medium.com/google-developers/Android-data-binding-custom-setters-55a25a7aea47#.6ygaiwooh そして、それらがどのようにbindingAdapterを設定するかを確認しました。しかし、私が見逃したことがあります
同じ問題が発生しました。次を使用してレイアウトをバインドできませんでした。
DataBindingUtil.setContentView(activity, layoutResId);
バインド可能な属性には"bind"名前空間を使用し、アダプターパラメーターとレイアウト属性には同じ名前を使用することをお勧めします。
@BindingAdapter("bind:imageUrl")
public static void setImageUrl(ImageView imageView, String imageUrl) {
Log.d("TEST","URL: " + imageUrl);
}
<ImageView
Android:id="@+id/image_holder"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:scaleType="centerCrop"
Android:layout_below="@id/profile_container"
bind:imageUrl="@{item.imageUrl}"
tools:src="@drawable/placeholder_image"/>
ここで、名前空間"app"は"bind"に置き換えられました
試してみてください
@BindingAdapter({"bind:imageUrl"})