Sobald die FastScroller
(seine in AbsListView
Klasse, die ListView
reicht von) erhält Ihre Abschnitte durch SectionIndexer#getSections()
Aufruf, es nie wieder erhält sie, wenn Sie aktivieren/deaktivieren schnell Scrollen im Link aufgeführt, wie Sie erwähnt. Um den Wert auf dem Bildschirm anzuzeigen, ruft FastScroller die Methode toString des Abschnitts auf.
Eine mögliche Lösung ist es, ein individuelles hat SectionIndexer
, die folgenden Eigenschaften aufweisen:.
- Sektionen Array ist mit einer festen Länge (maximaler Länge der erwarteten Anzahl von Abschnitten zum Beispiel, wenn die Abschnitte Englisch darstellen Alphabet es 26 sein wird)
- Haben Sie eine benutzerdefinierte Objektabschnitte darstellen, anstatt Strings
- Überschreiben schreiben~~POS=HEADCOMP Sie die
toString
Methode des benutzerdefinierten Abschnitt Objekt anzuzeigen, was Sie wollen auf der Grundlage der aktuellen ‚Abschnitt Werte‘. -
z.B. In Ihrer benutzerdefinierten SectionIndexer
private int mLastPosition;
public int getPositionForSection(int sectionIndex) {
if (sectionIndex < 0) sectionIndex = 0;
// myCurrentSectionLength is the number of sections you want to have after
// re-indexing the items in your ListView
// NOTE: myCurrentSectionLength must be less than getSections().length
if (sectionIndex >= myCurrentSectionLength) sectionIndex = myCurrentSectionLength - 1;
int position = 0;
// --- your logic to find the position goes in here
// --- e.g. see the AlphabeticIndexer source in Android repo for an example
mLastPosition = position;
return mLastPosition;
}
public Object[] getSections() {
// Assume you only have at most 3 section for this example
return new MySection[]{new MySection(), new MySection(), new MySection()};
}
// inner class within your CustomSectionIndexer
public class MySection {
MySection() {}
public String toString() {
// Get the value to displayed based on mLastPosition and the list item within that position
return "some value";
}
}
Nachladen ich etwas Similiar hier tue http://stackoverflow.com/questions/10224233/alphabetindexer-with-custom-adapter-managed-by-loadermanager – toobsco42