Android GrideView

前幾天在用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中的具體位置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章