异步加载图片等数据
2013-04-09 14:24
369 查看
大致思路为两步:(1) 加载tableView时读取图片缓存,如果存在则显示,如果不存在则异步下载;(2) 下载图片信息成功,更新图片缓存,重新加载tableView的数据
示例代码:
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { /* 其他代码 */ // 用户头像 UIImage *userPic = [self cachedImageForUrl:[NSURL URLWithString:url]]; cell.userPicView.image = userPic; /* 其他代码 */ } - (UIImage *)cachedImageForUrl:(NSURL *)url { id cachedObject = [self.cachedImage objectForKey:url]; if (cachedObject == nil) { //防止reloadData时重复提交请求,添加占位符 [self.cachedImage setObject:@"Loading..." forKey:url]; //异步下载图片 ASIHTTPRequest *picRequest = [ASIHTTPRequest requestWithURL:url]; picRequest.delegate = self; picRequest.didFinishSelector = @selector(didFinishRequestImage:); picRequest.didFailSelector = @selector(didFailRequestImage:); [self.queue addOperation:picRequest]; // 更新状态栏的网络标示 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; }else if ( ![cachedObject isKindOfClass:[UIImage class]] ) { cachedObject = nil; } return cachedObject; } - (void)didFinishRequestImage:(ASIHTTPRequest *)request { NSData *imageData = [request responseData]; UIImage *image = [UIImage imageWithData:imageData]; if (image != nil) { [self.cachedImage setObject:image forKey:request.url]; [self.tableView reloadData]; } [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; } - (void)didFailRequestImage:(ASIHTTPRequest *)request { NSLog(@"Error Download Image: %@", request.error); [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; } |
相关文章推荐
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- Android studio请求网络数据ListView异步加载展示文字条目 ImageLoadler加载图片
- Android:android的框架区别(网络框架、图片异步加载与缓存框架、数据框架)特点整理
- 异步加载数据,图片,展示到listView
- volley获取JSON数据+异步加载图片+NetworkImageView加载网路图片(一)
- volley学习笔记(四):Android利用Volley异步加载数据(JSON和图片)完整示例
- listview item 异步加载数据图片
- android结合异步任务,动态加载图片,Json解析数据展示在ListView,并且实现按日期分类展示,借口回调
- Cocos2d-js 开发记录:图片数据资源等的异步加载
- 异步加载数据和图片综合案例
- Android利用Volley异步加载数据(JSON和图片)完整示例
- 【Android学习笔记系列】AsyncTask、BaseAdapter整合异步加载用例(通过解析JSON格式数据加载网络图片内容)
- 如何异步加载图片等数据?
- Android 解决ListView异步加载网络数据(图片文字)出现位置错乱以及优化ListView的加载
- Android异步加载数据和图片的保存思路详解
- Android异步加载学习笔记之三:用AsyncTask实现ListView中的图片数据加载
- ListView数据异步加载图片和使用AsyncTask优化