[Android实例]Listview异步加载图片之优化篇(有图有码有解释)

            ViewHolder viewHolder = null;

            if (convertView == null) {

                    convertView = LayoutInflater.from(mContext).inflate(

                                    R.layout.list_item, null);

                    viewHolder = new ViewHolder();

                    viewHolder.mTextView = (TextView) convertView

                                    .findViewById(R.id.tv_tips);

                    viewHolder.mImageView = (ImageView) convertView

                                    .findViewById(R.id.iv_image);

                    convertView.setTag(viewHolder);

            } else {

                    viewHolder = (ViewHolder) convertView.getTag();

            }

            String url = "";

            url = urlArrays[position % urlArrays.length];

             

            viewHolder.mImageView.setImageResource(R.drawable.ic_launcher);

             



            if (!mBusy) {

                    mImageLoader.DisplayImage(url, viewHolder.mImageView, false);

                    viewHolder.mTextView.setText("--" + position

                                    + "--IDLE ||TOUCH_SCROLL");

            } else {

                    mImageLoader.DisplayImage(url, viewHolder.mImageView, true);                

                    viewHolder.mTextView.setText("--" + position + "--FLING");

            }

            return convertView;

    }



    static class ViewHolder {

            TextView mTextView;

            ImageView mImageView;

    }

}




关键代码是ImageLoader的DisplayImage方法,再看ImageLoader的实现



public class ImageLoader {

    private MemoryCache memoryCache = new MemoryCache();

    private AbstractFileCache fileCache;

    private Map<ImageView, String> imageViews = Collections

                    .synchronizedMap(new WeakHashMap<ImageView, String>());

    // 线程池

    private ExecutorService executorService;



    public ImageLoader(Context context) {

            fileCache = new FileCache(context);

            executorService = Executors.newFixedThreadPool(5);

    }



    // 最主要的方法

    public void DisplayImage(String url, ImageView imageView, boolean isLoadOnlyFromCache) {

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值