返回顶部
首页 > 资讯 > 移动开发 >android baseAdapter getview方法问题
  • 786
分享到

android baseAdapter getview方法问题

baseadapterAndroid 2022-06-06 13:06:22 786人浏览 独家记忆
摘要

今天在写一个GridView的BaseAdapter时发现,Adapter的getview方法在position为0的时候会连续调用好几次。 我

今天在写一个GridView的BaseAdapter时发现,Adapter的getview方法在position为0的时候会连续调用好几次。
我们知道谷歌时是做过优化的,让view有个缓存,我怀疑是因为做缓存的原因才让position连续调用

log如图在这里插入图片描述
可见position为0调用了好几次getview,但其它的又没有重复调用。

然而我恰好要动态改变第一个view,所以我写了

if(position == 0){
	ac = viewholder.textview;
}

将position为0的textview缓存下来了。
当我在fragment修改这个textview的值为C,setText确实奏效了,它的值变成了C。但当我再次将其改变为AC时,他却没有了变化,还是C。
我又打了这个textview内容的log,log显示的是AC。

这就很奇怪了,分明屏幕上写的是C但是现在是AC。所以我不是单纯的将position为0的TextView缓存,而是只缓存了第一次调用getview的TextView。

然后重复修改它的值,这次成功了。它可以动态修改了。

这是因为position为0的有好几份。而adapter的getview方法会因为界面的修改重新调用,如果凡是position就缓存,会导致每次修改的都不是同一份。

但是除了position为0的,其它都可以随便存(不包括滑动)。

总之,关于adaptr 因为谷歌的重复利用convertview,我们不能为所欲为的操作。很有可能不是同一个view。还是老老实实用notifyDataSetChanged();好点

如果将app置于后台,再次打开时。用TextView的settext方法修改的视图会变成最初始的


作者:qq_42429889


--结束END--

本文标题: android baseAdapter getview方法问题

本文链接: https://lsjlt.com/news/29451.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作