首先,需要总结一下Androird 中常见的visibility 属性 VISIBLE,INVISIBLE,GONE 的区别
控件可见: visible
XML 文件:android:visibility="visible"
Java 代码:view.setVisibility(View.VISIBLE)
控件不可见: invisible (界面保留控件的空间)
XML 文件:android:visibility="invisible"
Java 代码:view.setVisibility(View.INVISIBLE)
控件隐藏: GONE(界面不保留空间,后续控件可以填补上去)
XML 文件:android:visibility="gone"
Java 代码:view.setVisibility(View.GONE)
昨天遇到了一个情况,展示一个界面的时候,显示出现了脏读,
不知道从哪里获取到的奇葩数据,按道理讲线路是不应该出现货物信息的,如下显示:
没办法,陆续查了资料,觉得可能是后端的问题,于是和后端对接发现,返回的数据集是没问题的,
在AS中的Logcat打印出的数据依然是没问题的,那后端也没能知道这些脏数据是怎么被读取到的,
好吧,那就只能利用流程控制进行隐藏了
所以接下来我就按照代码进行流程控制,把不该显示数据的地方进行隐藏数据,
找到view进行隐藏之后,线路部分是正常了,但货物部分的显示信息 又不正常了,如下:
每次添加新的发布货物内容之后,第一条货物数据显示都为空,
但是第二条数据的货物信息显示是正常的,
百思不解,以为是展示页面的listView 出现问题了,
后来陆续请教了一位大神,原来是 视图复用导致的结果!
解决办法就是在适配器的逻辑代码里加上这样一句代码
viewHolder.tv_carInfo.setVisibility(View.VISIBLE);
然后就搞定了!