Android GrideView

来源:互联网 发布:大数据新闻案例分析 编辑:程序博客网 时间:2024/06/05 00:16

前几天在用gridview这个控件,想给gridview的每个item添加按下的动画效果,结果在获取子view上碰到一点麻烦,首先我想获取gridview的item个数,使用方法gridView.getChildCount(),结果获取到的返回结果竟然是0,可是我明明添加了5个item,后来有发现有一个gridView.getCount()的方法,试了一下返回结果正确,后来上网一查,才知道getChildCount()返回的是显示层面上的“所包含的子 View 个数”,而getCount() 返回的是其 Adapter.getCount() 返回的值。也就是“所包含的 Item 总个数”。也就是说,第一种情况:GridView中的 Item 比较少无需滚动即可全部显示时,二者是等价的;第二种情况:当 Item 个数较多需要滚动才能浏览全部的话, getChildCount() 返回的是当前可见的 Item 个数。但是我的demo中,我的gridview明明属于第一种情况,应该说使用getChildCount()与getCount()结果应该是一样的才对,但却只有使用getCount()才能获取正确的item个数,实在想不明白,好吧,这个问题就等你们整明白了告知一下博主了。。接下来,我要获取gridview的子view,其中有这样一个方法gridView.getChildAt(intposition),返回的是一个view,欣然用之,结果又返回一个null给我,继续查,原来getChildAt(init position)中的position是指当前gridview的可见区域的第几个子view,没错啊,我的5个item都在可见区域,给我返回null是几个意思,然后我突然又想起gridview的adapter中有一个getView(int position, View convertView, ViewGroup parent)的方法,惊天一笔写下了gridView.getAdapter().getView(position, null, null),成功获取到了gridview的子view!!!!

总结一下,获取gridview的item个数和gridview的子view共有两种方法:

第一种:针对当前gridview的可见区域(这种方法我自己用了无效,原因不明)

获取当前可见区域的子view个数:gridView.getChildCount()

获取当前可见区域的子view:gridView.getChildAt(intposition); position为当前可见区域的相对位置

第二种:针对总体的gridview(其实就是gridview的adapter)

获取实际adapter中的view个数:gridview.getCount();

获取实际adapter中的子view:gridView.getAdapter().getView(position, null, null); position为子view在adapter中的具体位置

0 0
原创粉丝点击