毕设遇到的问题(二)---gridview viewholer

开始写第二篇了

关于GridView的问题

毕设写的是课程管理,这样需要一个weekview来显示一周所有的课程,国外已经有一个很好的应用叫TimeTable,虽然我的也叫timetable哈,但差距远了。因为好奇给开发者发了一封邮件,没想到开发者挺热情回复了我。在他和stackoverflow的帮助下,gridview的问题也解决了。

问题是这样的,一开始把所有的数据读取操作放在了getview里面,这无疑是自杀的行为,卡顿不是一般的。。。后来通过google稍微解决了一点卡顿的问题,但还是有那么些。是用异步来读取所有lesson 放在一个数组里面,然后getview根据position就可以很快的拿到了。

但是卡顿还是存在,于是去stackoverflow找,结果没找到,可能是因为英文关键词用的不对吧。然后就提问了,老外直接给我一个很长的文档,说复用convertView。地址在这http://www.vogella.com/articles/AndroidListView/article.html   找到了viewholder, 说convertView 要复用,因为每次findviewbyid也是相当耗时的。找到需要的地方,赶紧改代码啊。改完之后打开weekview 后果真流畅了不少,可是有一个大麻烦来了。就是gridview的显示问题,各种错乱。在csdn上有人说convertview不能复用,会导致显示错乱的问题,但是在gridview中很明显要使用viewholder pattern 才能解决卡顿的问题显然不靠谱。。。继续google,关于girdview的文章实在太少了。

仔细想了想,根据position 来get item是没错的,为何会出现其他的grid item会显示本不该显示的内容呢? 这因该是复用convertview的问题,继续google gridview getview的工作原理,说是position=0时候convertview是null, 但是以后的话就显示上一次return 的convertview了。如果是这样也就不难理解为什么会出现错乱的现象了。

解决方案 就是不断的重置viewholder中各种view的值。免得返回的convertview是上一个item的内容。这样确实也起到了作用。完美解决(可能是完美吧)。

ps:从db中读数据确实太慢,88个格子,执行一遍要2~3秒。这个速度难怪直接在getview中从数据库中get会卡顿勒。

转载于:https://www.cnblogs.com/ivanchou/archive/2013/05/21/3090286.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值