У меня есть ListView с fastScrollAlwaysVisible и fastScrollEnabled оба установлены в true. После внедрения SectionIndexer в мои Adapter и AlphabetIndexer мой fast scroll thumb исчезнет во время прокрутки, а затем снова появится, как только я дойду до верхней или нижней части списка. Я довольно не знаю, почему это происходит. Раньше я этого не испытывал.
Все ниже работает до AlphabetIndexer. Мой вопрос в том, почему мой быстрый палец прокрутки исчезает во время прокрутки и как я могу остановить его от исчезновения?
Независимо от того, всегда ли отображается fast scroll, не имеет значения. Всякий раз, когда отображается fast scroll, fast scroll thumb не существует, он просто ушел и эта проблема. Кроме того, когда я удаляю AlphabetIndexer, fast scroll thumb работает так, как я его намерен. Все работает успешно в Activity, но когда я загружаю ListView в Fragment, все заканчивается, как я объясняю.
Это мой Adapter для моего 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);
}
}
}