2 yinxiaopei yinxiaopei 于 2015.06.05 09:06 提问

android gridview自定义adapter,adapter中的子控件如何隐藏。

如题所示。我在adapter里想隐藏和显示控件,设置viewHolder.mIvLogo.setVisibility(View.VISIBLE);无效。怎样设置才能有效隐藏显示呢?求帮助!

6个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.05 09:12
已采纳
 viewHolder.mIvLogo.setVisibility(View.VISIBLE);这是显示
 隐藏是
 viewHolder.mIvLogo.setVisibility(View.INVISIBLE);//隐藏但布局占位
 或
 viewHolder.mIvLogo.setVisibility(View.GONE);//布局不占位
yinxiaopei
yinxiaopei 回复danielinbiti: 应该不是适配器的问题,我也不知道怎么描述才能回答清楚了== 谢谢 我自己再看看
2 年多之前 回复
danielinbiti
danielinbiti 回复yinxiaopei:你的代码,是不是你这隐藏显示是放在某个item布局中的click事件中?如果是,估计你这代码有问题。点击时的viewHolder.mIvLogo不是你想的这个item内的组件
2 年多之前 回复
yinxiaopei
yinxiaopei 我知道gone是隐藏 我的意思就是隐藏和显示都没作用 谢谢你
2 年多之前 回复
qq_22202859
qq_22202859   2015.06.05 09:38

先在xml文件中 View.GONE 然后在 adapter的getView方法条件判断设置 View.VISIBLE 就可以啦。是不是你条件判断有问题哦

u013321495
u013321495   2015.06.05 09:41

在内部类中调用外部变量需要加final修饰 而final修饰的变量又是不可变的,你前面就好重新赋值,前后矛盾

qq_22202859
qq_22202859   2015.06.05 09:42

像这样
if(producttable.get(position).getProducthascoupon().equals("false")){
holder.listjuan.setVisibility(View.GONE);
}else if (producttable.get(position).getProducthascoupon().equals("true")) {
holder.listjuan.setVisibility(View.VISIBLE);
}

    记住一定要设置隐藏和显示判断
yinxiaopei
yinxiaopei 应该不是适配器的问题,我也不知道怎么描述才能回答清楚了== 谢谢 我自己再看看
2 年多之前 回复
qq_22202859
qq_22202859 回复yinxiaopei: 不能吧,你把代码贴来看看
2 年多之前 回复
yinxiaopei
yinxiaopei if(producttable.get(position).getProducthascoupon().equals("false")) 这个就是一个boolean类型类似于flag的东西是吧?我判断了也是无效的。。。if (flag == false) { viewHolder.mImageLogo.setVisibility(View.GONE); } else { viewHolder.mImageLogo.setVisibility(View.VISIBLE); }我在需要隐藏的地方设置了flag = false;还是不行的
2 年多之前 回复
ysy6688
ysy6688   2015.06.05 12:02

下个断点调试一下就知道了,看程序有没有按你设计的思路走,就能找到问题所在。

yinxiaopei
yinxiaopei   2015.06.05 16:43

感谢大家的回答,不过我都不知道怎么追问,问题不是适配器的原因,我也没有解决。我再看看是什么原因吧。谢谢你们

Csdn user default icon
上传中...
上传图片
插入图片