GridView项目有时会显示错误的drawable

ori*_*yan 1 android gridview

我已经基于本教程实现了一个GridView .除非打开搜索对话框或旋转屏幕然后滚动,否则它的效果很好.

当出现搜索对话框和虚拟键盘时,我的每个网格项的可绘制项都会移动.我可以点击它们,他们按照我的预期行事,除了抽奖是错误的.

当我进入横向模式并滚动时,会发生同样的问题.如果我向下滚动,向上滚动,向下滚动,则拖车会被拖曳.

为了更好地说明,假设我有三个对象,每个对象都有一个图像.

  • Obj A显示了一个Apple
  • Obj B显示香蕉
  • Obj C展示了哈密瓜

转变发生时,我最终得到:

  • Obj A显示了哈密瓜
  • Obj B显示香蕉
  • Obj C展示了Apple

两个原因之间的问题不一致(搜索对话框和屏幕旋转n'滚动),但每个原因本身是一致的.反复滚动会显示模式,搜索对话框也会出现.我怎么能阻止这种情况发生?

Com*_*are 6

您链接到的源代码存在缺陷.

您可以在布局充气时设置文本和图像getView(),如该代码所示.您需要每次都设置文本和图像,无论是新建的布局还是通过回收的布局convertView.

关键在于"回收"一词.如果convertView不是null,那意味着View您之前夸大了一些现有的Android,Android希望您根据提供的位置重新填充新数据.您链接的代码会忽略该部分.

以下是我的一本书的摘录,其中涵盖了适配器中的回收概念.虽然摘录侧重于ListView,但该技术是相同的GridView.