| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.widget; |
| |
| /** |
| * Interface that may implemented on {@link Adapter}s to enable fast scrolling |
| * between sections of an {@link AbsListView}. |
| * <p> |
| * A section is a group of list items that have something in common. For |
| * example, they may begin with the same letter or they may be songs from the |
| * same artist. |
| * <p> |
| * {@link ExpandableListAdapter}s that consider groups and sections as |
| * synonymous should account for collapsed groups and return an appropriate |
| * section/position. |
| * |
| * @see AbsListView#setFastScrollEnabled(boolean) |
| */ |
| public interface SectionIndexer { |
| /** |
| * Returns an array of objects representing sections of the list. The |
| * returned array and its contents should be non-null. |
| * <p> |
| * The list view will call toString() on the objects to get the preview text |
| * to display while scrolling. For example, an adapter may return an array |
| * of Strings representing letters of the alphabet. Or, it may return an |
| * array of objects whose toString() methods return their section titles. |
| * |
| * @return the array of section objects |
| */ |
| Object[] getSections(); |
| |
| /** |
| * Given the index of a section within the array of section objects, returns |
| * the starting position of that section within the adapter. |
| * <p> |
| * If the section's starting position is outside of the adapter bounds, the |
| * position must be clipped to fall within the size of the adapter. |
| * |
| * @param sectionIndex the index of the section within the array of section |
| * objects |
| * @return the starting position of that section within the adapter, |
| * constrained to fall within the adapter bounds |
| */ |
| int getPositionForSection(int sectionIndex); |
| |
| /** |
| * Given a position within the adapter, returns the index of the |
| * corresponding section within the array of section objects. |
| * <p> |
| * If the section index is outside of the section array bounds, the index |
| * must be clipped to fall within the size of the section array. |
| * <p> |
| * For example, consider an indexer where the section at array index 0 |
| * starts at adapter position 100. Calling this method with position 10, |
| * which is before the first section, must return index 0. |
| * |
| * @param position the position within the adapter for which to return the |
| * corresponding section index |
| * @return the index of the corresponding section within the array of |
| * section objects, constrained to fall within the array bounds |
| */ |
| int getSectionForPosition(int position); |
| } |