인자로 함수를 받는 함수를 고차함수라고 하는데요.

영어로 HigherOrder Function이라고 하지요.

오늘은 이것을 이용해서 리스트의 아이템OnItemClickListener를 어떻게 이용하는지 정리해 보도록 하겠습니다.

먼저 기본적인 recyclerView를 설정하도록 하겠습니다.

참고로 여기서는 viewBinding을 사용하였습니다.

viewBiding은 findviewById를 대체할 수 있는 방법인데요.

이와 관련해서는 다른 글에서 정리하도록 하겠습니다.

 

1. RecyclerView를 위한 기본적인 셋업

먼저 가장 기본적인 Recycler View를 세팅하도록 하겠습니다.

 

1-1. DataModel설정

먼저 Movie라고 하는 간단한 데이터클래스를 정의하겠습니다.

 

 

1-2. recyclerView

먼저 아래와 같이 간단히 Activity안에 recyclerView를 정의해 주구요.

 

 

 

1-3. layoutXML정의

리사이클러뷰 안에 들어갈 아이템 하나의 레이아웃 xml을 파일로 아래와 같이 정의해 줍니다.

 

 

 

1-4. ViewHolder와 ViewAdapter 정의

아래와 같이 가장 기본적인 형태의 MovieAdapter를 정의해 줍니다.

(참고로 @Inject는 Dependency Injection인 Hilt를 사용하기 위한 것인데요.

사용하지 않는 분들은 넣지 않으시면 됩니다.)

 

 

2. onItemClickListener

이제 고차함수를 이용한 onItemClcickListener를 알아보도록 하겠습니다.

고차함수라고 어렵게 생각할 것이 아니라, 그냥 축약된 형태의 이름없는 함수자체가 인자나, 타입의 형태로 들어오신다고 생각하면 됩니다.

 

먼저 Item을 listen하는 onItemClickListener를  보겠습니다.

Movie객체를 받아서 return하는 값이 없는 함수타입입니다.

함수이름이 없이 그냥 함수자체가 return타입으로 들어간 것 이지요.

null을 대입해 줍니다.

 

이제 Adapter에서 이 listener를 set하는 함수를 만들어 주고, 나중에 Activity에서 호출해주기만 하면 되겠지요.

인자로 이름없는 함수자체를 받아주어서, onItemClickListener에 넣어주면 끝입니다.

복잡해보이지만 간단합니다.

 

 

 

이제 위의 함수를 아래와 같이, onBindViewHolder에서 set해주기만 하면 되겠지요.

 

 

3. Activity에서 setOnItemClickLister 사용

 

이제 아래와 같이 recyclerView를 adapter에 set해주구요.

mAdapter에 담은 adapter에 setOnItemClickListener를 호출해주기만 하면 끝입니다.

인자로 ((movie)->unit)함수가 들어올 것이므로 이를 활용해서 원하는대로 사용해주기만 하면 됩니다.

 

 

 

이상으로 고차함수를 활용해서, recyclerView의 리스트뷰에서 Item을 클릭해서 데이터를 가져와 사용하는 방법에 대해 정리해 보았습니다.

더욱 좋은 방법이 있다면 이 글을 통해서 업데이트하도록 하겠습니다.

 

Hilt에 관련한 글은 아래 글을 참조해 주세요.

>> HILT 에 대해서 정리해 보겠습니다. # DI Dependency Injection

728x90

+ Recent posts