2016-04-19 4 views
0

Hier ist ein short video meines Problems. Der letzte Abschnitt der Liste scrollt sehr schnell, wie Sie an der Bildlaufleiste erkennen können. Hier ist mein Code (die relevanten Teile):Letzter Abschnitt von SectionIndexer scrollt wirklich schnell

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; 
    } 

Weiß jemand, wie ich das beheben kann?

Vielen Dank im Voraus.

Antwort

1

Ich reparierte es, indem ich 0 anstelle von 1 in GetSectionForPosition zurückgab.

0

Das Zurückgeben einer Konstante in getSectionForPosition kann zu einem Fehlverhalten der Bildlaufleistenposition beim Durchziehen der Liste führen. Obwohl Ihr Problem scheint zu beheben, ist es tatsächlich nicht. Dokumentation für die getSectionForPosition Methode sagt:

Gegeben eine Position innerhalb des Adapters, gibt den Index des entsprechenden Abschnitts innerhalb der Anordnung der Abschnitt Objekte.

Also, wenn Sie Swipe durch die Liste, die Sektion Sie gerade sehen ändert sich schließlich (z erreichst du die B'-Teil in Ihren Kontakten). Diese Methode teilt der Bildlaufleiste mit, wo sie sich positionieren muss, wenn Sie durch Ihre Liste wischen (das ist das Gegenstück zur getPositionForSection Methode, die zu dem Abschnitt in der Liste springt, wenn Sie mit Ihrer Bildlaufleiste scrollen).

Ich stellte eine Beispiel-Implementierung der getSectionForPosition Methode here.

Verwandte Themen