Android中ArrayAdapter参数疑问:View类型布局如何适配int类型参数?
关于ArrayAdapter构造方法参数的疑惑解答
嘿,这个问题问到点子上了!其实这里有个小小的误解,我来给你梳理清楚:
首先,你传入的不是View对象本身,而是布局文件对应的资源ID——也就是Android在编译阶段自动生成的R.layout.xxx这个int值。Android会把所有的布局、字符串、图片等资源,都分配一个唯一的整数ID并存在自动生成的R类里,所以R.layout.my_list_item本质上就是个普通的int数字,完全符合这个构造方法的参数类型要求。
那ArrayAdapter拿到这个int类型的资源ID后,是怎么得到View对象的呢?
- 当列表需要渲染某个列表项时,ArrayAdapter会通过
LayoutInflater.from(context)获取布局解析器 - 然后调用
inflate(resource, parent, false)方法,把这个int对应的布局文件(XML)解析成真正的View对象 - 最后再把数据源里的数据绑定到这个View上(默认是把数据的
toString()结果填充到布局里的第一个TextView中)
举个生活化的例子:这个资源ID就像是你家的门牌号,ArrayAdapter拿着门牌号(int)找到对应的房子(布局XML文件),然后把房子装修成可以住人的样子(View对象),最后把要放的东西(数据)摆进去。
如果你的布局里有多个控件,或者需要更复杂的绑定逻辑,就可以用带第三个参数(指定要填充数据的TextView ID)的构造方法,甚至自定义Adapter来实现更灵活的布局渲染。
内容的提问来源于stack exchange,提问作者jitendra singh shekhawat
相关产品推荐
相关产品推荐

