
新的:
最后我得到了一些解决方案.它的工作对我很好.如有任何建议,请通知我.
我的新代码在这里. (它使用堆栈与生产者消费者patern和bacground线程进行)
@覆盖
public voID bindVIEw(VIEw vIEw,Context context,Cursor cursor){
VIEwHolder holder = (VIEwHolder) vIEw.getTag(); String name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.VIDeo.Media.Title)); int ID = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.VIDeo.Media._ID)); holder.getIDVIEw().setText(name); holder.getThumbVIEw().setTag((Integer)ID); if(LazyLoader.getInstance().containsKey(ID)) { Object bitmap = LazyLoader.getInstance().getBitMap(ID); if(null != bitmap && (bitmap instanceof Bitmap)) { holder.getThumbVIEw().setimageBitmap((Bitmap)bitmap); } else { holder.getThumbVIEw().setimageDrawable(null); } } else { holder.getThumbVIEw().setimageDrawable(null); LazyItem lazyItem = new LazyItem(); lazyItem.setID(ID); lazyItem.setthumbnail(holder.getThumbVIEw()); LazyLoader.getInstance().putItem(lazyItem); }}public class LazyLoaderHelper extends Thread { private ContentResolver resolver = null; private Activity activity; private boolean isActive = true; ExecutorService executor; public LazyLoaderHelper(Activity _activity,ContentResolver _resolver) { resolver = _resolver; activity = _activity; isActive = true; executor = Executors.newFixedThreadPool(10); } public voID stopThread() { isActive = false; executor.shutdown(); } @OverrIDe public voID run() { while (isActive) { if(LazyLoader.getInstance().getSize() > 0) { final LazyItem lazyItem = LazyLoader.getInstance().getItem(); if(null != lazyItem) { executor.execute(new Runnable() { @OverrIDe public voID run() { BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 1; if ((null != resolver) && (null != activity)) { final Bitmap thumb = MediaStore.VIDeo.thumbnails.getthumbnail(resolver,lazyItem.getID(),MediaStore.VIDeo.thumbnails.MICRO_KIND,options); if (null != thumb) { LazyLoader.getInstance().putBitMap(lazyItem.getID(),thumb); } else { LazyLoader.getInstance().putBitMap(lazyItem.getID(),new Object()); } if ((Integer) lazyItem.getthumbnail().getTag() == lazyItem.getID()) { activity.runOnUiThread(new Runnable() { @OverrIDe public voID run() { if (null != thumb) { lazyItem.getthumbnail().setimageBitmap(thumb); } else { lazyItem.getthumbnail().setimageDrawable(null); } } }); } } } }); } } } }}解决方法 您可以使用picaso库的AndroID它是开源的,可以轻松地与您的应用程序集成,您可以从github从下面的链接下载库 http://square.github.io/picasso/
并且可以通过在列表视图适配器中使用以下方法轻松实现延迟加载
毕加索支持下载和错误占位符作为可选功能.
Picasso.with(上下文)
.load(URL)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(ImageVIEw的);
所有资源,资产,文件,内容提供商都被作为图像来源.
Picasso.with(上下文).load(R.drawable.landing_screen).into(imageVIEw1);Picasso.with(上下文).load( “文件:///androID_asset/DvpvklR.png”).into(imageVIEw2);Picasso.with(context).load(new file(…)).into(imageVIEw3);
总结以上是内存溢出为你收集整理的android – Lazy加载到ListView with Image. (光标适配器)全部内容,希望文章能够帮你解决android – Lazy加载到ListView with Image. (光标适配器)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)