마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ExpandableListView에서 SectionIndexer사용시 문제가 있어 질문드립니다.

0 추천

지금 위의 그림처럼 리스트들을 ㄱㄴㄷ순으로 정렬하여 스크롤을 끌 때 초성이 ㄱ인지 ㄴ인지를 보여주기 위해 커스텀 adapter에 sectionIndexer를 implements했습니다.

그냥 ListView일때는 문제가 없었는데 ExpandableListView에서는 문제가 생깁니다.

예를 들어 위 그림처럼 버벌진트를 클릭해 Child가 하나가 생기면 순서가 하나씩 밀려 신용재에서 'ㅅ'이 떠야함에도

'ㅂ'이 떠버립니다.

 

아래는 SectionIndexer 관련합수입니다.

@Override
	public int getPositionForSection(int section) {
		// TODO Auto-generated method stub 
		
		int _section;		
		String letter = (String)sections[section];
		_section = myIndexer.get(letter);
		
		
		return _section;
	}

	@Override
	public int getSectionForPosition(int position) {
		
		Log.d(TAG, "position : "+position);
	
		// TODO Auto-generated method stub
		int _position=position;
		int closestIndex = 0;
		int latestDelta = Integer.MAX_VALUE;

		for (int i = 0; i < sections.length; i++) {
			int current = myIndexer.get(sections[i]);
			if (current == _position) {
				// If position matches an index, return it immediately
				return i;
			} else if (current < _position) {
				// Check if this is closer than the last index we inspected
				int delta = _position - current;
				if (delta < latestDelta) {
					closestIndex = i;
					latestDelta = delta;
				}
			}
		}
		
		Log.d(TAG, "closestIndex : "+sections[closestIndex]);
		
		return closestIndex;
	}

	@Override
	public Object[] getSections() {
		// TODO Auto-generated method stub
		return sections;
	}

진짜 구글링을 4일정도 하면서 방법을 찾아봤지만 해결이 되지않네요.

알파벳뿐만 아니라 한글까지 들어가서 stackoverflow의 답변을 사용해도 잘 되지 않았습니다.

혹시 방법을 아시는 분이 있으면 꼭 좀 알려주시면 감사하겠습니다.

노투아 (160 포인트) 님이 2013년 8월 28일 질문
노투아님이 2013년 8월 28일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...