解决方案 »
- 纠结很久的在底部显示一个加载进度的view,gridview则做不到
- 急,怎么定制AlertDialog
- tabHost能不能在一个tab里面获取别的tab里面的EditText的内容啊
- android 如何添加USSD测试代码?
- 在android上实现远程视频的功能
- 怎样启动一个应用,让这个应用启动后直接Pause到后台?
- OpenGLES1.0 贴图不显示的问题
- 新手想尝试开发一个项目,有很多疑问,欢迎解答
- "D:\\Android\\android-ndk-r10\\android-ndk-r10\\ndk-build.cmd" 系统找不到指定的路径。
- android studio的jni调试是怎么使用LLDB调试的
- anroid怎么30秒连接一个服务器
- 关于解锁屏幕后引发的问题
adapter = new ImageAndTextListAdapter(this, imageAndTexts, listv, icount);
adapter.notifyDataSetChanged();
listv.setAdapter(adapter); 另外getview 里面的position第一次调用
0,1
第二次是
0,1,2,3
第三次是
0,1,2,3,4,5每次都从0开始
if (cachedImage == null) {
imageView.setImageResource(R.drawable.ic_launcher);
}else{
imageView.setImageDrawable(cachedImage);
}
我发现 cachedImage 总是null所以一直执行
imageView.setImageResource(R.drawable.ic_launcher);
不知为什么?异步类如下:
public class AsyncImageLoader {
// 为了加快速度,在内存中开启缓存(主要应用于重复图片较多时,或者同一个图片要多次被访问,比如在ListView时来回滚动)
public Map<String, SoftReference<Drawable>> imageCache = new HashMap<String, SoftReference<Drawable>>();
private ExecutorService executorService = Executors.newFixedThreadPool(5); // 固定五个线程来执行任务
private final Handler handler = new Handler();
/**
*
* @param imageUrl
* 图像url地址
* @param imageCallback
* 回调接口
* @return 返回内存中缓存的图像,第一次加载返回null
*/
public Drawable loadDrawable(final String imageUrl,
final zz.nice.wife.AsyncImageLoader.ImageCallback imageCallback) {
// 如果缓存过就从缓存中取出数据
if (imageCache.containsKey(imageUrl)) {
SoftReference<Drawable> softReference = imageCache.get(imageUrl);
System.out.println("执行1");
if (softReference.get() != null) {
return softReference.get();
}
}
// 缓存中没有图像,则从网络上取出数据,并将取出的数据缓存到内存中
executorService.submit(new Runnable() {
public void run() {
try {
final Drawable drawable = loadImageFromUrl(imageUrl);
imageCache.put(imageUrl, new SoftReference<Drawable>(
drawable));
handler.post(new Runnable() {
public void run() {
imageCallback.imageLoaded(drawable, imageUrl);
}
});
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
return null;
} // 从网络上取数据方法
protected Drawable loadImageFromUrl(String imageUrl) {
try {
// 测试时,模拟网络延时,实际时这行代码不能有
//SystemClock.sleep(2000); return Drawable.createFromStream(new URL(imageUrl).openStream(),
"image.png"); } catch (Exception e) {
throw new RuntimeException(e);
}
} // 对外界开放的回调接口
public interface ImageCallback {
// 注意 此方法是用来设置目标对象的图像资源
public void imageLoaded(Drawable imageDrawable);
}}蓝色部分一直是false 未缓存
if (imageCache.containsKey(imageUrl)) {
SoftReference<Drawable> softReference = imageCache.get(imageUrl);
System.out.println("执行1");
if (softReference.get() != null) {
return softReference.get();
}
}
这段也未执行