Glide
을 사용하여 Recyclerview
(onBindViewHolder)의 이미지를 RequestListener
콜백으로로드합니다. 이미지가 처음로드 될 때마다 링크는 SharedPreferences 파일에 key
이라는 이름으로 저장됩니다. 이제 인수로 RequestListener
에 이름을 전달하고 싶습니다. RequestListener에 인수로서 이름을 전달하는 방법? 그리고 또한 실패를로드하는 경우에 onException 메서드에서로드 할 수 있도록 ImageView 전달해야합니다.RequestListener에 인수 전달 Glide
코드 :
는onBindViewHolder 방법 :
@Override
public void onBindViewHolder(final ContactsAdapter.ContactsViewHolder holder, int position) {
final ContactInfo current = cDataset.get(position);
holder.contactName.setText(current.Contact_name);
//current.Conatct_name has to be passed to requestListener
URL url = Util.getSignedUrl(getContext().getApplicationContext(), current.phone_number.concat("/").concat("profile").concat("/").concat(current.phone_number).concat(".jpg"));
if (url != null) {
Log.d("image", url.toString());
Glide.with(getContext()).load(url.toString()).skipMemoryCache(true).fitCenter().diskCacheStrategy(DiskCacheStrategy.SOURCE).listener(requestListener).error(R.mipmap.ic_launcher).into(holder.contactProfileImage);
} else {
Log.d("image", "null");
}
}
RequestListener : 그것은 RequestListener<String, GlideDrawable>
를 구현
CustomRequestListener
를 호출하기 위해 합리적인 것 같습니다이 경우
public RequestListener<String, GlideDrawable> requestListener = new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Log.d("No Image",String.valueOf(e));
Log.d("Loading from cache","true");
return true;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
Log.d("storing cache ","true");
return false;
}
};