为了账号安全,请及时绑定邮箱和手机立即绑定

可选框第一个文字按钮确实点击后隐藏不了临时解决方案

可选框第一个文字按钮确实点击后隐藏不了,不知道什么原因,我是通过getChildAt(0)的方式单独拿到第一个文字按钮,然后在点击的时候隐藏和显示解决了这个问题,但还是不知道为什么其它文字按钮点击时的隐藏显示没问题而第一个却隐藏不了(设置隐藏的代码执行了却没隐藏效果)

正在回答

1 回答

打上log你可以看到,gridview在进行getView显示时,position=0在开头和最后进行了重复调用(原因是gridView的机制决定的,会尝试将第一个元素多次生成来进行布局的计算,因此position=0会在最开头和最后都出现convertView == null 的情形)。在原代码中,每次convertView ==null我们都会重新生成一个button,因此最后这个button会在ArrayList中覆盖掉第一个(因为postion都是0)。但实际上这最后生成的只是系统用来重新算布局用的,并不显示到页面中。也就是说第一个ArrayList中的第一个(index=0)保存的按钮并不是你看到的那个。你点击时传递给回调的是那个本身不存在的。因此也是对它做的隐藏操作,看起来就像第一个并没有被隐藏,但是log又显示list.get(0).button.getVisibility=4。根本的原因就是不是同一个button。

要证明很简单:

  1. 设定一个static int NUM = 0;

  2. 在getView的逻辑中每构造一个button时,将button.setText(NUM); NUM++

  3. MainActivity的回调接口中,打印出回传的WordButton的button.getText()

  4. 在界面中你会看到0-23。 但是点击第一个按钮,打印的是24

解决办法:看置顶

0 回复 有任何疑惑可以回复我~
#1

为梦而战之学习 提问者

非常感谢!
2016-03-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android猜歌游戏是这样炼成的
  • 参与学习       27735    人
  • 解答问题       422    个

手把手教你完成一款猜歌类游戏,向你展示游戏实现的全部细节

进入课程

可选框第一个文字按钮确实点击后隐藏不了临时解决方案

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信