RecyclerView 2탄! item 클릭 시, 화면전환하기

2020. 4. 22. 23:39android

recyclerView 1탄에서 recyclerView를 생성하고 recyclerView container에 item들을 넣어봤다. 오늘은 이 아이템들에게 클릭리스너를 달아서 이벤트가 처리되도록 해보겠다.


1. 먼저 item의 xml을 만들자!

 

recyclerView container에 들어갈 item을 클릭 시, 새로운 액티비티창으로 이동해야하기 때문에 추가적인 액티비티 창을 만들어야 한다. 

 

new_activity.xml

 

 

 아이템의 구성은 동물들의 간단하게 textView 하나다.  이후에 activity창에서 xml과 연결시켜준다.

 

 

 

다시 adaptor로 돌아와서 이제 해야할 것들이 몇가지 있다. 우선 우리는 item에 클릭리스너를 달아야 한다. 그래야 아이템을 클릭 시, 이벤트를 처리할 수 있기 때문이다. 

 

 

recyclerViewAdaptor.class

recyclerView의 각 아이템을 재사용하는 myViewHolder에서 각 아이템에 대한 클릭 리스너를 달 수 있다. 

이는 myViewHolder가 recyclerView의 각 view항목을 만드는 역할을 하기 때문에 당연히 여기서 작업을 해야한다. 

그런데 코드를 보면 1번부터 5번까지 새롭게 추가된 코드들이 있다. 천천히 살펴보면 

 

1번 : 사용자가 클릭한 아이템의 position을 준다. 

2번 : 그 포지션이 recyclerView의 item을 클릭한 것인지 item이아닌 다른 클릭인지 여부를 확인한다.

3번 : activity 전환을 위해 intent를 사용한다. 

4번 : 새로운 액티비티에 현재 item 항목의 name을 전달하기 위해 사용한다. ps) 나중에 받는쪽(newActvitiy)에서 풀어서 사용 할 수 있다.

5번 : 액티비티 전환을 실시한다. 

 

이정도이다. 그리고 추가적으로 뜬금없이 생긴 mContext가 있는데 이는 startActivity를 사용하기 위해서이다. 

추가적으로 startActivity는 Activity를 상속받은 클래스가 사용할 수있는 메서드이기 때문에 adaptor에서는 사용할 수 없다. 따라서 mainActivity에서 어댑터에 인자로 context값을 넘겨줘서 실행하도록 만든다. 

 

MainActivity.class

물론 adapter의  constructor도 바꿔줘야 에러가 생기지 않는다. 

 

 

RecyclerViewAdaptor.class

최종적으로 추가해야 할 작업이 있다. 바로 intent로 넘긴 데이터를 받아야 한다.

 

NewActivity.class

이렇게 getIntent()를 통해서 보내는 쪽의 데이터를 받을 수 있다.  

 

실행 결과.

 

실행결과

'android' 카테고리의 다른 글

ViewPager2 어댑터 사용 방법  (0) 2020.08.12
newInstance()로 Fragment 생성해야하는 이유  (0) 2020.08.12
RecyclerView 사용해보기!( 1부 )  (1) 2020.04.17
Fragment LifeCycle  (4) 2020.03.03
Android Context  (6) 2020.02.24