RecyclerView: Async image-loading

前端 未结 7 810
被撕碎了的回忆
被撕碎了的回忆 2020-12-28 15:58

Im using RecyclerView to display a list containing an imageView. To make the UI more fluently, I load 58dp thumbnails saved on sd card into these i

相关标签:
7条回答
  • 2020-12-28 16:46

    You should check the universal image loader. It has memory cache, disk cache and it loads your images asynchronously so doesn't block the ui. You can set default image and/or failed to fetch image etc. It can sample down your image to decrease the memory footprint of the bitmap. I really recommend you to use it for images.

    Do not disable recyclable for your case because it is pointless. Images must be recycled because their bitmap drawables generate very high memory overload if not properly sampled.

    Sample usage in RecyclerViewAdapter:

    @Override
    public void onBindViewHolder(CustomViewHolder viewHolder, int position) {
        String imageUri = "";//local or remote image uri address
        //viewHolder.imgView: reference to your imageview
        //before you call the displayImage you have to 
        //initialize imageloader in anywhere in your code for once.   
        //(Generally done in the Application class extender.)
        ImageLoader.getInstance().displayImage(imageUri, viewHolder.imgView);
    }
    

    edit: Nowadays, I consider Glide as my main image loading and caching library. You can use it like this:

    Glide.with(context)
        .load(imageUri)
        .placeholder(R.drawable.myplaceholder)
        .into(imageView);
    
    0 讨论(0)
提交回复
热议问题