본문 바로가기

Android

[android]Multiple Listeners in ListView_ 리스트뷰에서 다중 리스너 처리하기

ListView의 Item에 포함된 control이 여러개일 경우 각각 다른 listener를 달아주어야한다.


list의 각 item들은 position에 종속적이고, item의 control은 해당 item에 종속적이다.


아래는 ListView의 item에 CheckBox, Button을 넣어 리스트를 클릭했을 때, 체크박스를 체크했을 때, 버튼을 클릭했을 때 각각의 이벤트 처리를 하는 예제.


핵심은 Listener를 상속받는 class를 객체로 만들어 Holder에 포함시키고 ListAdapter의 getView()에서 Listener class와 Item을 연결해준다.(3-2 ~ 3-4)


01. layout xml 생성 (ListView를 포함)


02. list item xml 생성 (CheckBox, TextView, Button을 포함)


03-1. Item class 생성


03-2. Item에 포함된 CheckBox의 Check Event를 받을 Listener class 생성(OnCheckedChangeListener를 상속)

   /  Item에 포함된 Button의 Click Event를 받을 Listener class 생성(OnClickListener를 상속)

            * 각각의 Listener들을 Holder의 객체로 사용하기 위해 class화 시킨다.(Item의 Item)


03-3. List Item의 Holder class 생성(item안의 모든 View(Control)를 담고있는 class)


03-4. List의 Adapter class 생성(Holder의 item과 item의 Listener를 getView()에서 연결)


03-5. List Set


3-6. 임시 Data Setting


03-7. List OnItemClickListener 작성(기존 List의 ItemClick 시 반응할 Listener)


04. 결과 화면


    

>> 전체 소스코드 

https://github.com/aggapple/AggappleMultipleListeners