Picasso (Android)로드 완료 이벤트를 수신하는 방법은 무엇입니까?
다음과 같은 빌더를 사용할 때 Picasso의 이벤트를 수신하는 방법이 있습니까?
Picasso.with(getContext()).load(url).into(imageView);
나는 전화를하기 위해 노력하고있어 requestLayout()
및 invalidate()
부모에 GridView
제대로 크기를 조정할 수 있습니다 있도록하지만 난 리스너를 설정하거나 콜백하는 방법을 모르겠어요.
Picasso에 오류 이벤트보고가 있지만 성공 이벤트가 있습니까?
를 사용하여 Callback
onSuccess 및 onError 이벤트를 가져올 수 있습니다 . 다음과 같이 요청에 새 콜백을 추가하면됩니다.
Picasso.with(getContext())
.load(url)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
}
});
그런 다음 onSuccess 콜백에서 변경 및 수정을 수행 할 수 있습니다.
뷰에로드되기 전에 비트 맵에 액세스해야하는 경우 다음을 사용해보십시오.
private Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
}
@Override
public void onBitmapFailed() {
}
}
호출 방법에서 :
Picasso.with(this).load("url").into(target);
이상적으로는보기 또는보기 홀더 개체에서 직접 Target을 구현하는 것입니다.
도움이 되었기를 바랍니다
@Jas 후속 질문에 MrEngineer13의 답변에 대한 의견으로 답변하면 (나는 어떤 답변에도 의견을 제시 할 충분한 평판이 없기 때문에) at 메서드 error()
를 등록하기 전에이 메서드 를 사용해야합니다. 예를 들면 다음과 같습니다.Callback
into()
Picasso.with(getContext())
.load(url)
.error(R.drawable.error_placeholder_image)
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
//Success image already loaded into the view
}
@Override
public void onError() {
//Error placeholder image already loaded into the view, do further handling of this situation here
}
}
);
Square는 최근 Target 클래스를 업데이트했으며 이제 ( onPrepareLoad
및 onBitmapFailed
) 를 재정의 할 더 많은 메서드가 있습니다 .
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
그리고 여전히 다음을 사용해야합니다.
Picasso.with(context).load(url).into(target);
private final Callback mImageCallback = new Callback() {
@Override
public void onSuccess() {
startPostponedEnterTransition();
}
@Override
public void onError() {
startPostponedEnterTransition();
}
};
RequestCreator creator = Picasso.with(getActivity()).load(list.get(position).getId());
creator.into(imageView, mImageCallback);
이 시도
Picasso.with(context)
.load(services.get(position).getImageInactive())
.into(holder.icon, new Callback() {
@Override
public void onSuccess() {
holder.imageLoad.setVisibility(View.GONE);
}
@Override
public void onError() {
holder.icon.setImageResource(R.drawable.ic_error_image_load);
}
});
다른 답변에 대한 보완으로 원본 이미지보기를 사용할 위치를 모르는 경우, 예 ImageView myIV
:
실물:
Picasso.with(activity).load(url).into(myIV);
새로운 (내부 onBitmapLoaded()
의 new Target()
) :
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
myIV.setImageBitmap(bitmap);
}
참고 URL : https://stackoverflow.com/questions/26548660/how-to-listen-for-picasso-android-load-complete-events
'Programing' 카테고리의 다른 글
직렬화 가능한 객체를 파일에 저장 / 복원하는 방법은 무엇입니까? (0) | 2020.09.13 |
---|---|
Android : CheckBox 크기를 변경하는 방법은 무엇입니까? (0) | 2020.09.13 |
numpy에서 1D 배열을 2D 배열로 변환 (0) | 2020.09.12 |
힙 크기보다 훨씬 많은 메모리를 사용하는 Java (또는 올바른 Docker 메모리 제한 크기) (0) | 2020.09.12 |
Angular“10 $ digest () 반복에 도달했습니다”오류 문제를 해결하는 방법 (0) | 2020.09.12 |