2014-04-17 8 views
1

Android에서 AlphabetIndexer 클래스는 ASCII ordering 클래스를 사용하여 목록의 항목을 주문합니다. 즉, 예를 들어 소문자 "a"로 시작하는 항목이있는 경우 대문자 "Z"다음에 순서가 지정되므로 이는 논리적이지 않습니다. 그런 상황에서 어떻게 든 대문자와 소문자를 결합하는 방법이 있습니까?Android에서 대문자와 소문자를 결합합니다. AlphabetIndexer

Viber의 연락처 목록은 "Y"와 "y"를 같은 섹션에 넣을뿐만 아니라 SectionIndexer에 "Yy"두 글자도 표시합니다. 그렇다면 기본 AlphabetIndexer로 달성 할 수 있습니까? 그런 종류의 문제에 대해 경험이있는 사람이 있습니까? 당신이 대소 문자를 구분하지하는 순서를 원하는 경우는 그 등장

답변

1

, 당신은 같은 경우 문자열을 비교하는 기능을 비교 AlphabetIndexer의 자신의 내선 번호를 생성하고 덮어 필요 이 문제의 해결책은 쉽지만 조금 까다 롭습니다. AlphabetIndexer 자체에 문제가있는 것 같지 않지만 요소가 커서에 정렬되는 방식으로 문제가있는 것으로 보입니다. 이 문제를 해결하기 위해 내가 한 모든 일은 내 SQL 쿼리에 COLLATE을 추가하는 것입니다.

은 그래서 정렬 순서로 다음과 같은 추가 :

private final String SORT_ORDER = Contacts.DISPLAY_NAME_PRIMARY + " COLLATE LOCALIZED ASC"; 

참고 :Contacts.DISPLAY_NAME_PRIMARY은 ... 낮은 API에 대한 당신이 Contacts.DISPLAY_NAME 필요 11 + API입니다.

P.S이 문제를 해결하기 위해 내가 유일하게 생각한 바가 있지만 기억이 안납니다. 도움이되지 않으면 제게 말해주십시오. 그러면 제 코드를 다시 보게 될 것입니다.

+0

너무 간단했습니다! 감사. 그래서 저는 AlphabetIndexer를 직접 구현하여 이것을 변경했습니다 :'protected int compare (String word, String letter) { \t \t return super.compare (word.toUpperCase(), letter); \t} ' – Andranik

+1

@Andranik 내 문제에 대해 위의 해결 방법을 시도했지만 아무런 효과가 없습니다. 내 자신의'CustomAlphabetIndexer'를 추가하고 위의 주석을했지만 아무 것도 변경하지 않았습니다. – BigT

+0

예, 늦은 답변을 드리지 못해 죄송합니다. 그러나 일부 테스트를 마친 후에도이 솔루션이 작동하지 않는 것으로 나타났습니다. 이제 막 적합한 솔루션을 게시 할 시간이 없었습니다. 나는 지금 그것을 여기 게시 할 것이다. 나는이 대답을 올바른 것으로 선택 해제했다 ... – Andranik

관련 문제