У меня есть ListView
с fastScrollAlwaysVisible
и fastScrollEnabled
. установите значение true
. После внедрения SectionIndexer
в мой Adapter
и AlphabetIndexer
мой бегунок быстрой прокрутки
исчезнет во время прокрутки, а затем снова появится, как только я достигну вверху или внизу списка. Я совершенно не понимаю, почему это происходит. Я не испытывал этого раньше.
Все нижеизложенное работает в том, что касается AlphabetIndexer
. Мой вопрос: почему мой большой палец быстрой прокрутки исчезает во время прокрутки и как я могу остановить его исчезновение?
Является ли быстрая прокрутка
видимой всегдаили нет, не имеет значения. Всякий раз, когда отображается быстрая прокрутка
, бегунок быстрой прокрутки
отсутствует, его просто нет, и это моя проблема. Кроме того, когда я удаляю AlphabetIndexer
, бегунок быстрой прокрутки
работает так, как я и предполагал. Все успешно работает в Activity
, но когда я загружаю свой ListView
в Fragment
, все заканчивается так, как я объясняю.
Это мой Адаптер
для моего ListView
:
private class AlbumsAdapter extends SimpleCursorAdapter implements
SectionIndexer {
private AlphabetIndexer mIndexer;
// I have to override this because I'm using a `LoaderManager`
@Override
public Cursor swapCursor(Cursor cursor) {
if (cursor != null) {
mIndexer = new MusicAlphabetIndexer(cursor, mAlbumIdx,
getResources().getString(R.string.fast_scroll_alphabet));
}
return super.swapCursor(cursor);
}
@Override
public Object[] getSections() {
return mIndexer.getSections();
}
@Override
public int getPositionForSection(int section) {
return mIndexer.getPositionForSection(section);
}
@Override
public int getSectionForPosition(int position) {
return 0;
}
}
MusicAlphabetIndexer
помогает правильно сортировать музыку:
class MusicAlphabetIndexer extends AlphabetIndexer {
public MusicAlphabetIndexer(Cursor cursor, int sortedColumnIndex,
CharSequence alphabet) {
super(cursor, sortedColumnIndex, alphabet);
}
@Override
protected int compare(String word, String letter) {
String wordKey = MediaStore.Audio.keyFor(word);
String letterKey = MediaStore.Audio.keyFor(letter);
if (wordKey.startsWith(letter)) {
return 0;
} else {
return wordKey.compareTo(letterKey);
}
}
}