RecyclerView 是 Android 一個不可以缺少的 Component,雖然初學時用起上來非常之複雜,但是學會了後是一個絕對強勁的東東。 ### 設定 Adapter 在使用 RecyclerView 時也是需要設定 Adapter 才能夠使用,像從前的 ListView 一樣 : ```java // check adapter has initialized if( adapter == null ) { // new adapter adapter = new YourAdapter(); // set adapter to recycler view mRecyclerView.setAdapter(adapter); } ``` ### 問題產生 上面的 Code 應該是日常用來設定 RecyclerView Adapter 時用到。但是原來以上的 Code 會出現一個問題 !! 就是當 RecyclerView 重新建立過後,但上一個 adapter 沒有變成 null 時,新的 RecyclerView 就永遠不會設定 adapter 了 !! 這個情況會當使用者離開了這個 Fragment 後,在下一個 Fragment 使用 Back press 退行時發生,因為在後排的 View 已經 destroy 了,所以在載入時會運行一次 `onCreateView()` 重新畫出 UI,但是先前的 Adapter 卻沒有清空變成 null 的,所以 if 入面的條件是永遠不能進入。 ### 解決方法 我們應該雖要檢查 RecyclerView 的 Adapter 是否有設定。 ``` // check adapter has initialized if( adapter == null ) { // new adapter adapter = new YourAdapter(); } // check recycler view has set adapter if( mRecyclerView.getAdapter() == null ) { // set adapter to recycler view mRecyclerView.setAdapter(adapter); } ``` 簡單加入檢查,就可以確保萬無一失了 !