2011-11-03 58 views
4

我在網格視圖中顯示圖像[約100個圖像],這些圖像將在10秒後刷新。我只想刷新那些對user.how可見的圖像。只能從網格視圖中獲取可見的項目,所以我可以請求服務器僅獲取那些對用戶可見的圖像?網格視圖獲取用戶可見的項目

+0

請不要重複相同的問題,如果您有任何新增加的內容,請更新此問題。 – Kev

回答

8
for(int i = 0; i < GridView.getChildCount(); i++) { 
    if(GridView.getChildAt(i).isVisible()) 
     // do what you need 
} 

您應該考慮,這是抽象的代碼片段,以解決您的問題

編輯剛剛說明的方法:在我看來,更好的方法:

for(int visiblePosition = GridView.getFirstVisiblePosition(); visiblePosition <= GridView.getLastVisiblePosition(); visiblePosition++) { 
    View view = GridView.getChildAt(visiblePosition); 
    // make something 
} 
+2

感謝它的工作,實際上當用戶滾動gridview'onScrollStateChanged',並且當狀態轉到'OnScrollListener.SCROLL_STATE_IDLE'的條件。我正在檢查可見的孩子,並只請求來自服務器的這些圖像。 – aditimirani

+0

不客氣) – teoREtik

+1

getChildAt對物品的位置不起作用,但是對於通常不相同的子視圖位置。如果項目多於可見,編輯後的解決方案將引發異常。 – xmen

3

你可以簡單地調用: gridView.getFirstVisiblePosition() gridView.getLastVisiblePosition()

我做了一件你想做的事情。所以我用它來只抓取需要的圖像。