728x90
리싸이클러뷰를 처리하는데 null 오류가 뜨면서 에러가 나는 경우가 종종 있다.
아직 VIEW 가 그려지지 않았는데 리싸이클러뷰에 대한 처리를 하려다보니 생기는 오류이다.
이는 RecyclerView 뿐 아니라 다른 view 들도 가능하지만
꼭 이 리싸이클러뷰에서 오류가 많이 나서..^0^...........
ViewTreeObserver 의 체크시점은
OnDrawListener 뷰를 그릴 때
OnGlobalFocusChangeListener 전체 뷰 포커스가 변경될 때
OnGlobalLayoutListener 전체 뷰가 그려졌을 때
OnPreDrawListener 뷰가 그려지기 전에
OnScrollChangedListener 스크롤 상태 변경될 때
OnTouchModeChangeListener 터치 모드가 변경될 때
OnWindowAttachListener 뷰의 계층 구조에 붙거나 떨어질 때
OnWindowFocusChangeListener 윈도우 포커스가 변경 됐을 때
를 체크해서 처리할 수 있다.
나는 보통
OnGlobalLayoutListener 를 리스너에 붙인 뒤에 작업을 처리하도록 하곤 한다.
그리고 제일 중요한건!!
리스너를 호출 하고 꼭 removeOn~~~Listener() 를 호출해서
초기화시켜주어야한다.
JAVA
mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
KOTLIN
reycler_view.getViewTreeObserver(object: ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout(){
reycler_view.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
코틀린은 이렇게ㅎ_ㅎ
728x90
'안드로이드 > JAVA' 카테고리의 다른 글
[code] android recyclerview 깜빡임 방지 (0) | 2022.02.17 |
---|---|
[error] com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details (0) | 2022.01.19 |
[code] android Bitmap To Base64 (0) | 2022.01.13 |
[code] android delay handler postDelayed (0) | 2021.04.29 |
[code] android webview cookieManager baked session (0) | 2021.04.28 |