Android alphabetindexer с числами

В Android, как вы используете AlphabetIndexer с цифрами? Код, как представляется, не работает

AlphabetIndexer alphabetIndexer = new AlphabetIndexer(cursor, COLUMN_INDEX,"0123456789") 

Кажется, что AlphabetIndexer отлично работает с числами. Я создал простой ListFragment, который объединяет список строк и чисел, сортирует их и показывает их в списке с функциональным быстрым прокруткой. Это также работает для списка с только номерами.

 public class ListFragment extends android.support.v4.app.ListFragment { public static final String VALUE_COLUMN = "value_column"; public static final String[] PROJECTION = new String[] { BaseColumns._ID, VALUE_COLUMN }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new AlphanumericAdapter(getActivity(), generateDataCursor(getSortedListOfEntries()))); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); getListView().setFastScrollAlwaysVisible(true); getListView().setFastScrollEnabled(true); } private Cursor generateDataCursor(ArrayList<String> entriesAsArrayList) { MatrixCursor entriesAsCursor = new MatrixCursor(PROJECTION); for (String entry : entriesAsArrayList) { entriesAsCursor.addRow(new String[] { "0", entry }); } return entriesAsCursor; } private ArrayList<String> getSortedListOfEntries() { ArrayList<String> listEntries = new ArrayList<String>(); for (Locale locale : Locale.getAvailableLocales()) { int randomIntegerBetweenZeroAndNine = (int) (Math.random() * 10); listEntries.add(String.valueOf(randomIntegerBetweenZeroAndNine)); String countryName = locale.getDisplayCountry(); if (TextUtils.isEmpty(countryName)) listEntries.add(countryName); } Collections.sort(listEntries); return listEntries; } private class AlphanumericAdapter extends SimpleCursorAdapter implements SectionIndexer { private final AlphabetIndexer mAlphabetIndexer; public AlphanumericAdapter(Context context, Cursor cursor) { super(context, android.R.layout.simple_list_item_1, cursor, new String[] { VALUE_COLUMN }, new int[] { android.R.id.text1 }); mAlphabetIndexer = new AlphabetIndexer(cursor, 1, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"); } @Override public Object[] getSections() { return mAlphabetIndexer.getSections(); } @Override public int getPositionForSection(int sectionIndex) { return mAlphabetIndexer.getPositionForSection(sectionIndex); } @Override public int getSectionForPosition(int position) { return mAlphabetIndexer.getSectionForPosition(position); } } } 

О каком диапазоне номеров вы говорите? 0-9 только? В противном случае я не уверен, что будет делать то, что вы хотите, так как в алфавитном порядке 00000000, вероятно, продолжит 1111111 и 22222222 или 2222. Вы, вероятно, должны реализовать интерфейс индексатора раздела самостоятельно, что довольно довольно тривиальный интерфейс: http://developer.android.com /reference/android/widget/SectionIndexer.html, и вы можете вернуть диапазоны диапазонов, например «0-99». Но если вы действительно хотите только цифры 0-9, вы можете, вероятно, использовать AlphabetIndexer с простым CursorWrapper, который возвращает строковое значение чисел в вашем курсоре. http://developer.android.com/reference/android/database/CursorWrapper.html

Примечание. Предполагается, что ваш курсор возвращает числовой / нестроковый тип.