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);
}
```
簡單加入檢查,就可以確保萬無一失了 !