android Sroll事件的一些坑

2021-08-03 15:57:48 字數 892 閱讀 8879

這是原始碼

wate***ll_recyclerview.addonscrolllistener(new recyclerview.onscrolllistener()
我就對scoll之後發生的事情進行觀察,這裡有乙個lastpositions代表手機屏上最後乙個item在recyclerview中的位置,還有乙個引數totalcount表示的是現在已經請求下來的item的總數,這段**的邏輯是當totalcount ==lastpositions + 1 (為什麼是加1的問題我之後會提到) 時就再次進行網路請求,請求新的資料 (由於介面原因每次申請會增加12個新的item),通過監聽發現在由於在手機螢幕上的一次滑動在手機看來·可能是分別的幾次滑動,當正好滑動到lastpositions=11的時候,這一次的onscrolled方法並沒有立即去呼叫getdata方法去進行資料申請,而是接著監聽了下一次scroll,之後才進行了兩次網路請求,這個時候我們的totalcount已經變成了36,但是我們的lastpositions只是12。雖然我也不清楚為什麼沒有在第一次發現totalcount ==lastpositions + 1的時候就進行網路請求,但是只需要加入isloading這個引數,並在請求前進行判斷就可以防止同時進行兩次網路請求。

(程式崩潰是我自己的原因),但還是發現了scroll的這個小坑。

通過監聽發現當lastpostions到達 11時,你的每次滑動dy 非常小,即使你滑的很用力,而且你的這一次滑動在手機看來他分成了兩次滑動,第一次是dy是正值,第二次是負值=-dy,這就意味著你的每次滑動都被抵消了,所以永遠不可能達到totalcount的12,懷疑是scroll的時候lastposition==11的時候系統認為11已經到底了,為了防止你劃出屏,他就幫你滑回來了,所以造成第一次dy + 第二次dy = 0;

如果有什麼寫的不對的地方望大神指點。

JS的事件冒泡事件和事件捕獲分析

首先來說一下兩者的定義 1 冒泡型事件 事件按照從最特定的事件目標到最不特定的事件目標 document物件 的順序觸發。ie 5.5 div body document ie 6.0 div body html document mozilla 1.0 div body html document...

事件流 事件捕獲?事件冒泡?

事件流 從頁面中接收事件的順序。也就是說當乙個事件產生時,這個事件的傳播過程,就是事件流。ie中的事件流叫事件冒泡 事件冒泡 事件開始時由最具體的元素接收,然後逐級向上傳播到較為不具體的節點 文件 對於html來說,就是當乙個元素產生了乙個事件,它會把這個事件傳遞給它的父元素,父元素接收到了之後,還...

事件捕獲事件冒泡事件委派

當事件發生時,事件從dom樹頂層節點,一直傳播到目標節點,這個階段就叫做事件捕獲階段 當事件發生時,事件從目標節點,一直傳播到dom樹頂層節點,這個階段就叫做事件冒泡階段 當事件發生時,事件傳播順序為 事件捕獲階段 事件目標階段 事件冒泡階段 function stopbubble e else f...