作者lazior (懶人)
看板AndroidDev
標題[問題] viewpager 在 recyclerview 自動播放
時間Fri Sep 22 00:13:29 2017
想要能像蝦皮一樣,
能將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://webptt.com/m.aspx?n=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
1F:→ ssccg: 只是要當時的第一項的話為什麼要綁特定item,Timer執行時直 09/22 00:27
2F:→ ssccg: findFirstCompleteVisibleItemPosition找當時的第一項就好? 09/22 00:28
有想過...
但不知道怎麼去取得head view
而且這樣要在背景一直跑一個timer
去檢查是否為head view
3F:推 aids61517: RecyclerView的adapter中有onViewAttachedToWindow 09/22 10:44
4F:→ aids61517: 和onViewDetachedFromWindow,你可以用參數viewHolder 09/22 10:44
5F:→ aids61517: 及instanceof判斷是不是你要自動撥放的holder 09/22 10:45
6F:→ aids61517: 來判斷要不要新增/移除timer 09/22 10:46
後來是採用您的方法
在onBindViewHolder如果新增的這個是head view
就掛上OnAttachStateChangeListener()
當view attach時就取消所有之前timer,並產生新的timer
(不知回收怎麼運作,當我view attach,先前的timer也會被啟動...)
如果view detach就取消timer
7F:推 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