Я использую Picasso с bindingAdapter для загрузки URL-адреса в imageView, я привязал модель и макет, и Picasso внутри bindingAdapter работает и загружает URL-адрес, когда я устанавливаю переменную привязки с конструктором по умолчанию в MainActivity
.
Но при установке переменной привязки для другого конструктора, передающего значения, Picasso не загружает URL?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
binding=DataBindingUtil.setContentView(this,R.layout.activity_main);
//in this case .........> Picasso loads images
binding.setGame(new Game());
//but in this case .........>Picasso deosnt load images
binding.setGame(new Game("Ori","//i.imgur.com/CQ7Ts4d.png"
,"http://i.imgur.com/CQ7Ts4d.png"));
URL-адрес передается в loadImage
, и я могу регистрировать URL-адрес, но я не понимаю, почему Пикассо не загружает его в представление?
@BindingAdapter("loadImage")
public static void loadImage(ImageView view, String url) {
if(url==null){
url="http://i.imgur.com/CQ7Ts4d.png";
Log.d(TAG," .....................[Cover Url is empty].................................");
}else {
Log.d(TAG,url);
}
Picasso.get()
.load(url)
.transform(new RoundedCornersTransformation(30, 0,
RoundedCornersTransformation.CornerType.ALL))
.into(view);
а это моя модель
private static final String TAG = "Testing";
private String name;
private String cover;
private String backGround;
public Game(){
}
public Game(String name, String cover, String backGround) {
this.name = name;
this.cover = cover;
this.backGround = backGround;
}
public void setName(String name) {
this.name = name;
notifyPropertyChanged(BR.name);}
public void setCover(String cover) {
this.cover = cover;
notifyPropertyChanged(BR.cover);
}
public void setBackGround(String backGround) {
this.backGround = backGround;
notifyPropertyChanged(BR.backGround);
}
@Bindable
public String getName() {
return name;
}
@Bindable
public String getCover() {
return cover;
}
@Bindable
public String getBackGround() {
return backGround;
}
@BindingAdapter("loadImage")
public static void loadImage(ImageView view, String url) {
if(url==null){
url="http://i.imgur.com/CQ7Ts4d.png";
Log.d(TAG," .....................[Cover Url is empty].................................");
}else {
Log.d(TAG,url);
}
Picasso.get()
.load(url)
.transform(new RoundedCornersTransformation(30, 0,
RoundedCornersTransformation.CornerType.ALL))
.into(view);
и макет
<data>
<variable
name="game"
type="com.example.surface.gamehub.Game"/>
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/game_background"
android:layout_width="match_parent"
android:layout_height="161dp"
android:scaleType="fitXY"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/back_grounnd"
app:blurImage="@{game.backGround}"
/>
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="28dp"
app:layout_constraintBottom_toBottomOf="@+id/game_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@color/transperante_gray" />
<ImageView
android:id="@+id/game_cover"
android:layout_width="103dp"
android:layout_height="130dp"
android:layout_marginStart="20dp"
android:layout_marginTop="100dp"
android:scaleType="fitXY"
app:layout_constraintStart_toStartOf="@+id/game_background"
app:layout_constraintTop_toTopOf="parent"
app:loadImage="@{game.cover}"
tools:src="@drawable/cover"