У меня есть 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);
}
}
}