看板 AndroidDev 關於我們 聯絡資訊
想要能像蝦皮一樣, 能將viewpager的自動播放放在recyclerview的第一項 下timer是簡單,在onBindViewHolder 但當我的viewpager不可見時, 要怎麼將timer移除? 想了很久… 1.判斷position, 但如果我無法確定他在哪個position會不可見呢? 因為我的item高度不一定! 2.利用findFirstCompleteVisibleItemPosition 判斷第一個是誰? timer是移除了, 但當viewpager可見時要怎麼設置timer? 如果他還沒被回收? 題外話, 一開始以為蝦皮有解決這個問題了… 後來詳細測了一下… 蝦皮根本直接忽略壓!!! 我退出APP,他竟然還在背景跑timer… 沒有去處理這一塊…暈… 而且一個viewpager就一個timer 更新: 煆皮好像是直接鑲一個webview? 所以以現在的recyclerview有辦法達到同樣效果嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.19.35.216 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1506010411.A.046.html ※ 編輯: lazior (175.182.106.142), 09/22/2017 00:18:22 ※ 編輯: lazior (175.182.106.142), 09/22/2017 00:27:13
ssccg: 只是要當時的第一項的話為什麼要綁特定item,Timer執行時直 09/22 00:27
ssccg: findFirstCompleteVisibleItemPosition找當時的第一項就好? 09/22 00:28
有想過... 但不知道怎麼去取得head view 而且這樣要在背景一直跑一個timer 去檢查是否為head view
aids61517: RecyclerView的adapter中有onViewAttachedToWindow 09/22 10:44
aids61517: 和onViewDetachedFromWindow,你可以用參數viewHolder 09/22 10:44
aids61517: 及instanceof判斷是不是你要自動撥放的holder 09/22 10:45
aids61517: 來判斷要不要新增/移除timer 09/22 10:46
後來是採用您的方法 在onBindViewHolder如果新增的這個是head view 就掛上OnAttachStateChangeListener() 當view attach時就取消所有之前timer,並產生新的timer (不知回收怎麼運作,當我view attach,先前的timer也會被啟動...) 如果view detach就取消timer
lnmlee: 嘗試用 View.postDelay看看 09/23 08:49
※ 編輯: lazior (101.11.2.78), 09/24/2017 15:37:41 ※ 編輯: lazior (101.11.2.78), 09/24/2017 15:38:25