2013-05-08 13 views
3

我需要能夠分辨列表視圖中的哪些項目可見。 onScroll中的「visibleItemCount」項和listview.getChildCount都返回的值通常比它們應該基於屏幕上實際可見的值高1-3。這些項目不一定是相同的高度,這可能會發揮作用扔掉。列表視圖的getChildCount方法不會返回可見項數量的準確計數

什麼是獲得更準確讀數的最佳方式?

+0

你用正確的方式重新利用的意見,?如果你總是在getView方法中創建一個新視圖,就會發生奇怪的事情。另外,你的listview是否有可能落在另一個視圖之後? – 2013-05-08 19:46:05

回答

1

方法getChildCount()不應該返回可見孩子的的數量,但作爲文檔說:

返回該組中的兒童人數。

要獲得使用getLastVisiblePosition()getFirstVisiblePosition()可見項目的數量,你大概應該是:使用convertView

int visibleChildsCount=lv.getLastVisiblePosition()-lv.getFirstVisiblePosition(); 
+0

我正在嘗試這些,他們也返回錯誤的值。 getFirstVisiblePosition()正確地獲取框中第一個可見的getLastVisiblePosition,但getLastVisiblePosition與其他方法一樣,返回視圖框底部下方一到三個位置的項索引。 – 2013-05-08 18:42:56

+0

問題在於可見項目可以部分可見。 F.E.即使其中只有1個像素高度,列表中的最後一項也會計入可見項目中。所以'getLastVisiblePosition()'總是返回列表中部分可見的項目。 – 2013-05-08 18:45:29

+0

雖然這是真的,但它並沒有解釋[我看到的行爲](http://i.imgur.com/0P5pFiY.png)。在這一點上,我正在研究解決方案,以手動檢查自稱從底部可見的項目的位置,並將實際不是那些的項目計數在內。 – 2013-05-08 19:09:57

相關問題