a13252912215 2015-11-26 02:54 采纳率: 0%
浏览 2776
已结题

android scrollview动态加载数据

先声明不是滑动加载更多数据,我要做一个订单的页面,scrollview里面的内容不确定是几条,如果里面嵌套listview,每个item的布局太复杂(包含很多按钮,edittext,下拉菜单等等),很容易冲突,而且item的高度可能超过了一屏幕,scrollview嵌套listview问题又很多,所以请高手帮忙,该如何实现!谢谢各位了!

  • 写回答

3条回答 默认 最新

  • 普通网友 2015-11-26 03:05
    关注

    iphone(UITableViewCell)动态加载图片
    http://developer.apple.com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html
    其实在iphone上面是实现图片的动态加载,其实也不是很难,其中只要在代理中实现方法就可以
    首先在头文件中声明使用到的代理 如

    @interface XXX : UIViewController
    然后在.m中实现
    //滚动停止的时候在去获取image的信息来显示在UITableViewCell上面

    • (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { if (!decelerate) { [self loadImagesForOnscreenRows]; } }
    • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { [self loadImagesForOnscreenRows]; } //
    • (void)loadImagesForOnscreenRows { if ([self.entries count] > 0) { NSArray *visiblePaths = [self.tableView indexPathsForVisibleRows]; for (NSIndexPath *indexPath in visiblePaths) { AppRecord *appRecord = [self.entries objectAtIndex:indexPath.row]; if (!appRecord.appIcon) // avoid the app icon download if the app already has an icon { [self startIconDownload:appRecord forIndexPath:indexPath]; } } } }
    • (UITableViewCell )tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ………//初始化UITableView的相关信息 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; cell.selectionStyle = UITableViewCellSelectionStyleNone; } ……… if (!appRecord.appIcon)//当UItableViewCell还没有图像信息的时候 { if (self.tableView.dragging == NO && self.tableView.decelerating == NO)//table停止不再滑动的时候下载图片(先用默认的图片来代替Cell的image) { [self startIconDownload:appRecord forIndexPath:indexPath]; } cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"];
      } else//当appReacord已经有图片信息的时候直接显示 { cell.imageView.image = appRecord.appIcon; } } 以上就是动态加载的主要的代码实现(其中不包括从网络上面下载图片信息等操作) *
      *********************************** 因为我们创建UITableviewCell的时候是以重用的方式来创建,所以就相当于说第一屏显示的cell就是以后显示数据和图片的基础,因为后面数据超出一平的时候,我们只是改变数据的显示,并没有为每一个cell的数据元创建相应的一个 UITableViewCell(这样非常的浪费内存),要是我们没有实现
    • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 和
    • (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 代理的时候,当我们滚动UITableView的时候TableView 就是按照顺序来加载图片的信息资源,这样当我们用力滚动Table的时候就感觉相当的卡,(其实UITableView实在一个个的显示出cell的信息) 当我们实现了以上代理的话,就可以实现在tableView滚动停止的时候,在去加载数据信息,这样滚动期间的tableViewCell就可以用默认的图片信息来显示了。
    评论

报告相同问题?

悬赏问题

  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)