2017-12-07 9 views
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; 
    } 
} 

귀하의 답변을 주셔서 감사합니다 :

내가 사용하고 내 어댑터입니다.

답변

1

글라이드 또는 프레스코 이미지 라이브러리를 사용할 수 있습니다. 그들은 안정적으로 일하고 있습니다.

+0

피카소를 사용했지만 제대로 작동하지 않습니다. – Ehsan

+0

이미지 다운로드 완료 대기 중입니다. 글라이드를 쉽게 사용할 수 있습니다. 이것은 간단한 사용법입니다. GlideApp.with (this) .load (yoururl) .into (imageView); –