划分第一个可见项时差对时差不是一个好的解决方案。OnScroll侦听器每隔固定的时间周期接收一次onScroll事件,因此在大多数情况下,除法结果将为“
0”。
因此,您可以尝试执行以下操作:
private onScrollListener onScrollListener = new onScrollListener() { private int previousFirstVisibleItem = 0; private long previousEventTime = 0; private double speed = 0; @Override public void onScroll(HtcAbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (previousFirstVisibleItem != firstVisibleItem){ long currTime = System.currentTimeMillis(); long timeToScrolloneElement = currTime - previousEventTime; speed = ((double)1/timeToScrollOneElement)*1000; previousFirstVisibleItem = firstVisibleItem; previousEventTime = currTime; Log.d("DBG", "Speed: " +speed + " elements/second"); } } @Override public void onScrollStateChanged(HtcAbsListView view, int scrollState) { }};


