>

bindingAdapter와 함께 Picasso를 사용하여 imageView에 URL을로드하고 모델과 레이아웃을 바인딩했으며 bindingAdapter 내부의 Picasso가 작동하고 URL을 MainActivity 에서 기본 생성자로 바인딩 변수를 설정하면 URL 이로 드됩니다 .

그러나 바인딩 변수를 값을 전달하는 다른 생성자로 설정할 때 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을 기록 할 수 있지만 Picasso가 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"

  • 답변 # 1

    오래 후 나는 내가 전달하는 URL이 (http : // ..)를 포함하지 않았기 때문에이 모든 일이 발생했다는 것을 알았습니다. (// .....) URLS 양식 JSON을 얻었습니다. 문자열로 형식화해야합니다.

  • 이전 c# - 디렉터리를 만들 수 없습니다 - systemunauthorizedaccessexception 오류
  • 다음 android - kotlin을 사용하여 SQlite 데이터베이스의 다른 열에 열을 복사하는 방법