今天遇到一个很奇葩的问题,关于id重复的,记录下。
页面的整体布局比如是这样:
可以看到,其中有一个用于展示数据列表的ListView,它的id为listview,FilterView
是我自定义的一个分类筛选的view,它也有自己的布局,关键是在它的布局中,我也放了一个ListView用来展示分类数据,巧了,它的id我也没注意,写成了listview,如下:
然后问题来了,我是用的ButterKnife获取view实例的,as编译也没报错,列表数据的listview设置了adapter之后,数据一直无法显示出来,仔细检查代码逻辑也没发现问题,再检查xml布局,发现listview的id一样,修改一个之后,运行正常了。
得出的结论就是,在自定义view里面使用了xml布局,在整体页面的xml中使用自定义view也就相当于include
或merge
了自定义view中的xml,,虽然编译不会报错,但是findViewById时始终得到的是页面布局顺序中相同id的第一个view的实例。