回答

2

這當你知道有隻會工作2-3(無多,不會少),排在同一時間可見:

onChangeVisibleRows={(visibleRows) => { 
    const visibleRowNumbers = Object.keys(visibleRows.s1).map((row) => parseInt(row)); 
    if (visibleRowNumbers.length === 2) { 
     // visible row is visibleRowNumbers[0] 
    } 
    if (visibleRowNumbers.length === 3) { 
     // visible row is visibleRowNumbers[1] 
    } 
} 

買者是它並不完美地圖於行最明顯的是被認爲是可見的。但是,在使用它時,它在滾動時很有意義。在我的特定應用程序中,活動行和非活動行之間有明顯的轉變,因此它可以幫助用戶瞭解發生了什麼。

+0

順利!另外一個 – Mihir

+2

這個解決方案不適用於Android,因爲onChangeVisibleRows尚未針對Android實施。 – Brackets

+0

惱人的是,它不包含回調中的頭部,所以你不知道它是否在視圖中。即使它像上面的項目一樣滾動 – conor909

1

我沒有足夠的時間爲您的問題設計出準確的算法。但這裏是你可以做的 -

  1. 獲取滾動位置。 React native: get current scroll position of scrollview

  2. 獲取屏幕高度。 https://facebook.github.io/react-native/docs/dimensions.html#content

  3. 計算約。 ListView子級的高度。

您可以利用這三件事來找出特定孩子已經佔用了多少空間。

通過獲取滾動位置,您可以知道您向下滾動了多少個像素。除以你的孩子的身高,這樣你可以得到有多少孩子被用戶滾動。

(Scrolled height/Child height) = No. of children scrolled. 

最後,onChangeVisibleRows會告訴你哪些孩子是可見的。祝你好運!

+0

感謝您的回覆。我實際上以另一種方式結束了這個過程(請參閱我的[回覆](http://stackoverflow.com/a/36365410/2411446))以避免使用onScroll。我發現onScroll for this use可能會導致性能下降,具體取決於觸發onScroll事件的頻率。 – doostin

+0

@Mihir,無論如何計算每個孩子/行的高度?如果每個小孩/行高都是動態的,沒有固定的大小呢?謝謝。 – WantIt

相關問題