回答

0

一個跟進的問題這將是[0, listview.getChildCount())

2

您將需要使用[0,listview.getChildCount()),或在try/catch包裹,因爲這可以給你一個IndexOutOfBoundsException。但是,如果您得到的值爲null,則可能是因爲ListView尚未完成繪圖。您需要發佈Runnable來解決這個問題。

例如,這是我得到的計數,並決定是否有在List比什麼是在屏幕上的項目:

listView.post(new Runnable() 
{  
    public void run() 
    { 
     int numItemsVisible = listView.getLastVisiblePosition() - 
           listView.getFirstVisiblePosition(); 
     if (itemsAdapter.getCount() - 1 > numItemsVisible && numItemsVisible > -1) 
     { //do stuff }         
     else 
     { 
      //do other stuff 
     }    
    } 
}); 
+0

是否適合從適配器的getItem?或者,正如我所預料的那樣,由'adapter.getCount()'限制?順便說一句,我會測試並報告回來。 +1 –

+0

這將取決於'適配器數量,是的 – codeMagic

0

ListView控件只是瀏覽與兒童(行)。 getChildAt的範圍是[0,listview.getChildCount())。 ListView僅包含現在可見的視圖。適配器getCount()返回數據行的數量,如ListView的最大長度。

0

每個實驗,這裏是它是如何工作的。 ListView是適配器的一部分。所以如果一個適配器有500個項目而ListView有10個(10)。 ListView中的十個代表一個動態視圖。因此,如果firstVisibleItem在適配器是項目217,那麼指數的ListView的範圍將是(217,...,226),而listView.getChildCount()仍然會返回10

因此,答案是:

getChildAt(x) | x : [0+firstVisibleItem, listview.getChildCount()+firstVisibleItem) 
相關問題