通过getChildAt方法取得AdapterView中第n个Item(重新编辑)

本文纠正了对AdapterView的getChildAt()方法的误解,解释了ListView中item的复用机制。getChildAt()并不返回指定位置的item,而是返回可视区域内的第position个元素。在ListView滑动时,可以通过特定方法在任意状态下根据position获取可视区域内的item,若item不在可视区域则返回null。
摘要由CSDN通过智能技术生成

以前对于AdapterView(ListView和GridView的父类)以及这个类的getChildAt()方法理解十分粗浅,以为是指传入一个绝对position(就是这个item是AdapterView第几个元素)来直接获得到该item,当然,android SDK中对于该方法也没有很具体的说明。这个理解是错误的。以简单的listview为例先说下listview对于item的复用,一个元素很多的listview,如果页面的可视区域内最多可以看到6个元素,不妨假如它们的index是0-5,那么在内存中只有6个item对象。当第7个item(即index=6)进入到可视区域的时候,那么其实是在复用index=0的item。由于在滑动时getView这个更新控件的方法执行非常频繁,所以肉眼是丝毫看不出这种复用的。
那么,接着上面的例子来说,任何情况下,getChildAt(int position)返回的item都是指的可视区域内的第position个元素。下面是一种巧妙和严谨的方法可以在任何时候(指的是listView滑动在任意状态时)根据position取得可视区域内的item,如果该item不在可视区域,则返回null。

private static class ChildViewInfo {
   

        private
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值