3月 24, 2020 Android
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);
}
```

簡單加入檢查,就可以確保萬無一失了 !
過去文章
2025 (9)
4 (5)
3 (1)
2 (3)
2024 (25)
11 (3)
10 (3)
9 (1)
3 (18)
2022 (6)
10 (1)
6 (2)
5 (1)
3 (1)
1 (1)
2021 (21)
11 (7)
7 (1)
6 (2)
5 (2)
4 (6)
3 (2)
2 (1)
2020 (92)
12 (1)
11 (2)
10 (4)
9 (10)
8 (5)
7 (1)
6 (3)
5 (1)
4 (4)
3 (25)
2 (7)
1 (29)
2019 (57)
12 (25)
11 (7)
9 (25)