0
내 재활용보기에서 서버의 이미지를 설정하기 위해 Universal Image Loader 라이브러리를 사용하고 있습니다. 내 리사이클 뷰에서 스크롤을 시작하면 관계없는 이미지를 몇 초 동안 설정 한 다음 실제 이미지를 설정합니다. 어디에 문제가 있는지 알 수 없습니다. Universal Image Loader 관련없는 이미지를 설정하십시오.
public class HistoryDetailAdapter extends RecyclerView.Adapter<HistoryDetailAdapter.ViewHolder> {
private List<PList> menuItems;
private Context mContext;
private ActivityHistoryDetails activityHistoryDetails;
private DisplayImageOptions defaultOptions;
private ImageLoaderConfiguration config;
public HistoryDetailAdapter(List<PList> menuItems, Context mContext) {
this.menuItems = menuItems;
this.mContext = mContext;
this.activityHistoryDetails = (ActivityHistoryDetails) mContext;
byte[] toEncrypt = (G.getPremiumState()[0] + ":" + G.getPremiumState()[1]).getBytes();
String encryptedCredentials = Base64.encodeToString(toEncrypt, Base64.DEFAULT);
Map<String, String> headers = new HashMap();
headers.put("Authorization", "Basic " + encryptedCredentials);
defaultOptions = new DisplayImageOptions.Builder()
.cacheInMemory(false)
.cacheOnDisk(false)
.resetViewBeforeLoading(true)
.delayBeforeLoading(5000)
.showImageOnLoading(R.drawable.loading_02)
.showImageOnFail(R.drawable.ic_empty_white_box)
.extraForDownloader(headers)
.build();
config = new ImageLoaderConfiguration.Builder(activityHistoryDetails)
.defaultDisplayImageOptions(defaultOptions)
.imageDownloader(new AuthDownloader(activityHistoryDetails))
.build();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
ImageView imgDefault;
LinearLayout parentLayout;
CoordinatorLayout coordinatorLayout;
public ViewHolder(View v) {
super(v);
imgDefault = (ImageView) v.findViewById(R.id.img_defaultImage);
parentLayout = (LinearLayout) v.findViewById(R.id.parentLayout);
coordinatorLayout = (CoordinatorLayout) v.findViewById(R.id.coordinatorLayout);
}
}
@Override
public HistoryDetailAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new View
final View v = LayoutInflater.from(activityHistoryDetails).inflate(R.layout.activity_history_detail_recycler, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
//Download and Load Default Image from server into imgDefault ImageView
String url = "http://192.168.14.77:8080/api/images/download/";
if (menuItems.get(position).getPDefaultImage().getIId() != null) {
url += menuItems.get(position).getPDefaultImage().getIId();
ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleton instance
imageLoader.init(config);
imageLoader.handleSlowNetwork(true);
// Load image, decode it to Bitmap and return Bitmap to callback
ImageSize targetSize = new ImageSize(120, 120); // result Bitmap will be fit to this size
imageLoader.loadImage(url, targetSize, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
holder.imgDefault.setImageBitmap(loadedImage);
}
});
} else {
holder.imgDefault.setImageResource(R.drawable.loading_01);
}
}
@Override
public int getItemCount() {
if (menuItems.size() > 0) {
return menuItems.size();
} else {
return 0;
}
}
public List<PList> getList() {
return menuItems;
}
}
귀하의 답변을 주셔서 감사합니다 :
이
내가 사용하고 내 어댑터입니다.
피카소를 사용했지만 제대로 작동하지 않습니다. – Ehsan
이미지 다운로드 완료 대기 중입니다. 글라이드를 쉽게 사용할 수 있습니다. 이것은 간단한 사용법입니다. GlideApp.with (this) .load (yoururl) .into (imageView); –