關於ListView與Adapter心得 - lystyp/MVVMTest GitHub Wiki
看這個 https://givemepass.blogspot.com/2014/10/listviewholder-patternview.html
原來Adapater最主要的作用是幫View塞資料, ListView秀出來後,會去call adapter的getView來把Item View塞到ListView裡面, 假設畫面一開始可以塞10個item,那他大概會call個11、12次的getView, 我在getView裡面會判斷參數convertView是不是null,如果是null就new一個View給他, 如果不是,那這個View就是我之前New過的了欸!!!
就是一開始畫面全空,他就call個11、12次來拿到新的view之後, 假如我往下滑,他要show第十三個item,然後第1、2個item已經跑到畫面外,這兩個view實體就會被丟到回收區, 然後要秀的第13個item就去回收區隨便撈一個View實體,透過getView丟回來給我,我看要不要改動一下裡面的值再return回去給他, 所以真正有view的實體就一開始那幾個而以欸!我滑上滑下、都是同樣的view改變裡面的值而已
至於RecycleView, 則是直接回收ViewHolder, 需要的時候先create幾個與位置無關的view holder,接著再用onBindViewHolder去把值塞到ViewHolder裡面, 開滑 > 就把之前跑出螢幕外被回收的ViewHolder拿來重新透過onBindViewHolder塞值(不是亂抓,是有順序抓)