if(event.getAction() == MotionEvent.ACTION_DOWN){
if(sectionIndexter == null){
sectionIndexter = (IndexBarForSection) list.getAdapter();
}
int position = sectionIndexter.getPositionForIndexBar(CustomAdapter.sections[idx].charAt(0));
if(position == -1){
return true;
}
list.setSelection(position); // 해당 row로 이동
}
2- 3 화면 폴링 중에는 리스트를 안 보여주기 위한 설정
- listview 의 setOnScrollListener 를 연결 시킨 후 변경 상태에 따라서 처리
public void onScrollStateChanged(AbsListView abslistview, int scrollState) {
// TODO Auto-generated method stub
if(scrollState == OnScrollListener.SCROLL_STATE_IDLE ) {
// 스크롤 정지 상태
mIndexBar.setVisibility(View.VISIBLE);
} else if(scrollState == OnScrollListener.SCROLL_STATE_FLING) {
// 스크롤 폴링 중
mIndexBar.setVisibility(View.GONE);
} else if(scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
// 스크롤 터치 중
mIndexBar.setVisibility(View.GONE);
}
}
2 - 4 리스트 변경 중 헤더 변경
- 리스트 변경 중에 제일 처은 row의 값을 가져와서 보여줌
public void onScroll(AbsListView abslistview, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
tv.setText(stringList.get(firstVisibleItem).substring(0, 1).toUpperCase());
}
※ 제일 위 section 때문에 인덱스바가 제대로 안보여서 위치를 변경한 상태
한글과 조합되는 경우 인덱스바 길이가 변경되서 인덱스바 위치를 수정해야 함