web-dev-qa-db-fra.com

Comment utiliser le défilement rapide dans Android?

J'ai une liste d'événements qui sont séparés par mois et par année (juin 2010, juil 2010, etc.)

Je souhaite activer le défilement rapide car la liste est vraiment longue.

Comment activer le défilement rapide sur ListViews dans Android?

48
Rakshi

Dans la méthode onCreate de ListActivity, utilisez setFastScrollEnabled :

getListView().setFastScrollEnabled(true);
98
Maurice

Utilisez Android: fastScrollEnabled dans votre xml:

<ListView
    Android:id="@+id/listview_files"
    ...
    Android:fastScrollEnabled="true" >
</ListView>
65
user942821

Essayez ce qui suit

 <?xml version="1.0" encoding="utf-8"?>
    <resources>

    <style name="listviewfastscrollstyle" parent="Android:Theme">
        <item name="Android:fastScrollTrackDrawable">@drawable/listselector</item>
        <item name="Android:fastScrollThumbDrawable">@drawable/listselector</item>
    </style>

</resources>

Dans votre manifeste, définissez le style comme ceci:

<application Android:icon="@drawable/icon" Android:label="@string/app_name" Android:theme="@style/CustomTheme">

c'est la listview

 <ExpandableListView
        Android:id="@Android:id/list1"
        Android:layout_width="match_parent"
        Android:layout_height="0dip"
        Android:layout_weight="1"
        Android:drawSelectorOnTop="false"
        Android:fastScrollAlwaysVisible="true"
        Android:fastScrollEnabled="true"
         />
6
anjaly

Si vous voulez pouvoir personnaliser votre Fast-scroller, comme choisir votre propre image de scroller pour apparaître, je recommande d'utiliser cette source:

https://github.com/nolanlawson/CustomFastScrollViewDemo/

Fondamentalement, votre adaptateur listview devra implémenter un index de section. Cet indexeur de section peut être très dépouillé si vous ne voulez pas compliquer les choses et fournir un défilement rapide simple sur toute la longueur de la liste.

La source directe du fastscroller est ici:

https://github.com/nolanlawson/CustomFastScrollViewDemo/blob/master/src/com/nolanlawson/customfastscrollviewdemo/CustomFastScrollView.Java

Placez cette vue autour de votre liste (imbriquez votre liste dans cette vue dans votre fichier de disposition xml) et définissez Android: fastScrollEnabled = "true" sur votre liste.

Vous pouvez également consulter une réponse précédente: problème d'affichage du défilement rapide avec ListAdapter et SectionIndexer

4
Andreas Rudolph

Je voulais faire quelque chose de similaire à ce que vous vouliez réaliser. Je suis tombé sur ce post . C'est un excellent moyen d'implémenter un défilement rapide sans utiliser le standard Android AlphabetIndexer, qui nécessite un curseur que vous pourriez ne pas toujours avoir).

Fondamentalement, vous devez implémenter l'interface SectionIndexer dans votre adaptateur. Dans votre cas, au lieu de la lettre actuelle, vous afficheriez la période actuelle pendant que vous faites défiler.

1
argenkiwi

Définissez fastScrollEnabled dans votre xml ou définissez-le au moment de l'exécution si nécessaire.

1)  <ListView
        ...
        Android:fastScrollEnabled="true" />

2) mListView.setFastScrollEnabled(true);
0
Pawan Maheshwari

Si vous souhaitez afficher l'indexation alphabétique, vous pouvez vérifier ceci:

https://github.com/andraskindler/quickscroll

Il s'agit d'un projet de bibliothèque que j'ai créé, car je devais utiliser ce modèle de défilement dans quelques applications récentes, j'ai donc pensé que d'autres pourraient être intéressés. Il est assez facile à utiliser, voir le fichier Lisez-moi dans le lien github ci-dessus.

0
Andras K

Dans le fichier de mise en page:

Android: fastScrollEnabled = "true"

Vous pouvez activer la barre de défilement rapide par programme:

getListView (). setFastScrollEnabled (true);

0
Md.Tarikul Islam