본문 바로가기

Mobile/Android

[Android] SectionIndexer


SctionIndexer 와 FastScroll 소스 조합

1. FastScroll 주소록 처럼 나타 내기


현재 선택된 리스트의 제일 첫 row의 첫 글자를 보여줌

1 - 1 FastScroll 을 보여 주기 위한 설정

list.setFastScrollEnabled(true);

1 - 2 화면에 보여주는 리스트 정리
 - 첫 글자들만의 리스트 정리

1 - 3 이동 중에 화면에 보여주는 메소드
- SectionIndexer 의 Override

2. 인덱스 이용해서 해당 위치로 이동하기

 


인덱스 리스트는 위에서 사용한 FastScroll 리스트(sections)를 사용
list위에 View를 Draw 시킨 형태

2 -1 Draw Code
- 화면 좌측 중앙에 세로 크기의 보여줄 문자 리스트 갯수로 위치 계산


2 - 2 TouchEvent 처리( Touch 위치에 해당하는 Section으로 이동)
- getPositionForIndexBar - 전체 리스트에서 첫글자가 동일한 위치를 찾음
- setSelection - 해당 위치로 row 이동


2- 3 화면 폴링 중에는 리스트를 안 보여주기 위한 설정

- listview 의 setOnScrollListener 를 연결 시킨 후 변경 상태에 따라서 처리
2 - 4 리스트 변경 중 헤더 변경

- 리스트 변경 중에 제일 처은 row의 값을 가져와서 보여줌

※ 제일 위 section 때문에 인덱스바가 제대로 안보여서 위치를 변경한 상태
한글과 조합되는 경우 인덱스바 길이가 변경되서 인덱스바 위치를 수정해야 함


참조 : http://www.anddev.org/tutalphabetic_fastscroll_listview_-_similar_to_contacts-t10123.html