Последний раздел SectionIndexer прокручивается очень быстро
Вот короткое видео моей проблемы. Последний раздел списка очень быстро прокручивается, как вы можете видеть по полосе прокрутки. Вот мой код (соответствующие части):
public TotemAdapter (Activity activity, List<Totem> list) {
_activity = activity;
totemList = list;
showDelete = false;
var items = list.ToArray ();
alphaIndex = new Dictionary<string, int>();
for (int i = 0; i < items.Length; i++) {
var key = items[i].title[0].ToString();
if (!alphaIndex.ContainsKey(key))
alphaIndex.Add(key, i);
}
sections = new string[alphaIndex.Keys.Count];
alphaIndex.Keys.CopyTo(sections, 0);
sectionsObjects = new Java.Lang.Object[sections.Length];
for (int i = 0; i < sections.Length; i++) {
sectionsObjects[i] = new Java.Lang.String(sections[i]);
}
}
public int GetPositionForSection (int section) {
return alphaIndex[sections[section]];
}
public int GetSectionForPosition(int position) {
return 1;
}
public Java.Lang.Object[] GetSections () {
return sectionsObjects;
}
Кто-нибудь знает, как я могу это исправить?
Заранее спасибо.
3 ответа
Вы можете использовать метод SetFriction для управления быстрой прокруткой списка. Посмотрите пример на Android Listview с замедленной скоростью прокрутки
Возвращая константу в getSectionForPosition
может привести к неправильному поведению положения полосы прокрутки при пролистывании списка. Хотя ваша проблема, кажется, исправлена, на самом деле это не так. Документация для getSectionForPosition
Метод говорит:
Учитывая позицию в адаптере, возвращает индекс соответствующего раздела в массиве объектов раздела.
Поэтому, когда вы проводите по списку, просматриваемый в настоящий момент раздел в конечном итоге изменится (например, вы попали в раздел "B" в ваших контактах). Этот метод сообщает полосе прокрутки, где она должна располагаться, когда вы проводите по списку (который является аналогом getPositionForSection
метод, который переходит к разделу в списке, когда выпрокручиваете свой список с помощью полосы прокрутки).
Я предоставил пример реализацииgetSectionForPosition
метод здесь.