hegunhee/NewSimpleMemoApp

Adapter 콜백 사용

Closed this issue · 1 comments

배경

  • 현재 RecyclerView의 Item을 클릭했을때 새로운 Activity를 띄우는 코드를 ViewHolder 안에서 구현
  • 새로운 Activity를 띄우기 위해서는 Context가 필요(Intent객체를 만들기위해)
  • Adapter에서 Context를 사용하는게 좋지 않을것같아 람다로 구현해서 ViewHolder에서 콜백하려함

내용

  • Adapter에서 인자로 람다를 받음
  • Adapter를 사용하는 Fragment나 Activty에서 adapter객체를 생성할때 람다를 작성함

CallBackBefor
CallBack을 사용하기 이전 코드, Context를 가져오기 위해
onCreateViewHolder에서 Context를 변수에 넣어줌

Adapter 코드
Adapter의 인자로 람다식을 받음

Fragment 코드
fragment에서 adapter객체를 생성할때 람다 내용을 작성해줌

Adapter 코드
Context를 사용하지않고 bind 함수가 짧아짐

변경 사항
원래는 Listener인터페이스를 만들어 Fragment나 Activity에서 구현해 사용하려했지만
생각보다 코드가 지저분해져서 람다식으로 넘겨주기로 결정함

람다식으로 넘겨주는것이 아닌
어댑터에서 실행시켜야되는 함수들이 있다면 그 함수들에대한 정의를 해놓은 인터페이스를 만들어
해당 인터페이스를 넘겨받는식으로 작성함
해당 인터페이스 구현은 ViewModel에서 담당함