본문 바로가기
Android

Android RecyclerView Adatper 코드 리펙토링

by YoonTaeseong 2019. 12. 11.

안드로이드 RecyclerView.Adapter를 구현하다보면 되게 복잡하게 코드가 짜여진다. 다른 adpater를 만들 때 마다 계속해서 구현 해줘야하는 onCreateViewHolderonBindViewHolder 아래 사진은 제가 지금까지 adpater를 구현 할 때 마다 했던 방식입니다.

 

사진으로 비교해봐도 두개 각기 다른 Adapter인데 계속해서 불필요한 class 를 분산 시키고 클래스 파일을 제작하였었습니다.

 

이를 어떻게하면 하나의 베이스인 adapter를 만들어 해 나갈까 생각하던 중 좋은 예시를 하나 발견하고 저만의 스타일로 바꿔 나가기 시작했습니다.

제가 참고한 블로그는 아래 링크에 남겨 두겠습니다.

 

우선 처음에는 RecyclerView.ViewHolder를 상속받은 BaseViewHolder 추상 클래스를 제작 위에 사진에서 보이듯이 onBind가 계속해서 호출되기 때문에 onBind 함수 제작 해주었고 View.onBind 함수도 같이 구현하였습니다.

 

 

다음 리싸이클러뷰에 필요한  apdater부분 입니다. 기본적으로 필요한 RecyelrView.Adapter 를 상속받고 그게 따른 BaseRecyclerViewAdapter를 구현.

 

이로서 최상위에 있는 복잡한 Adapter 구조에서 저는 따로 enum형태의 클래스를 하나 더 만들어 각 분기마다 전체 틀 Adapter에서 holder를 다르게 주는 방식으로 변경하였습니다.

 

되게 코드가 보기쉽게 변경!

 

개인적으로 조금 더 코드를 간결하고 깔끔하게 짤 수 있을거 같았는데 이쁘게 구현하지 못해서 조금 아쉬운감이 있었습니다.

이상 RecyclerView.Adapter 코드 리펙토링 포스팅을 마치겠습니다.

 

 

 

 

 

- 참고 페이지

https://thdev.tech/android/2018/01/31/Recycler-Adapter-Distinguish/

 

RecyclerView.Adapter 어떻게 접근하면 좋을까? - ViewModel |

I’m an Android Developer.

thdev.tech

 

댓글