48

I have a list of events which are seperated by month and year (Jun 2010, Jul 2010 etc.)

I want to enable fast scrolling because the list is really long.

How do I enable fast scroll on ListViews in Android?

mmBs
  • 8,421
  • 6
  • 38
  • 46
Rakshi
  • 6,796
  • 3
  • 25
  • 46

7 Answers7

98

In the onCreate method of the ListActivity use setFastScrollEnabled:

getListView().setFastScrollEnabled(true);
aleb
  • 2,490
  • 1
  • 28
  • 46
Maurice
  • 6,413
  • 13
  • 51
  • 76
67

Use android:fastScrollEnabled in your xml:

<ListView
    android:id="@+id/listview_files"
    ...
    android:fastScrollEnabled="true" >
</ListView>
aleb
  • 2,490
  • 1
  • 28
  • 46
6

Try the following

 <?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>

In your Manifest set the style like this:

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

this is the 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"
         />
anjaly
  • 518
  • 5
  • 12
  • Okay can i do a fast scroll by date, i mean while performing fast scroll can i display the date of the record like one in call history – Rakshi May 15 '13 at 11:24
4

If you want to be able to customize your Fast-scroller, like choosing your own scroller image to appear, I recommend using this source:

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

Basically, your listview adapter will have to implement a sectionindexer. This section indexer can be very stripped if you don't want to complicate things and provide simple fastscrolling though the entire length of the list.

The direct source for the fastscroller is here:

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

Place this view around your listview (nest your listview inside this view in your xml layout file) and set android:fastScrollEnabled="true" on your listview.

You might also want to check out a previous answer: Fast Scroll display problem with ListAdapter and SectionIndexer

Community
  • 1
  • 1
Andreas Rudolph
  • 1,226
  • 19
  • 28
1

I wanted to do something similar to what you wanted to achieve. I bumped into this post. It is a great way to implement fast scrolling without using the standard Android AlphabetIndexer, which requires a Cursor you might not always have.

Basically, you would have to implement the SectionIndexer interface in your adapter. In your case, instead of the current letter, you would show the current period as you scroll.

argenkiwi
  • 2,134
  • 1
  • 23
  • 26
1

Within Layout File :

android:fastScrollEnabled="true"

You Can programmatically Enable Fast scroll bar:

getListView().setFastScrollEnabled(true);

Md.Tarikul Islam
  • 1,241
  • 1
  • 14
  • 16
0

Either define fastScrollEnabled in your xml or set it at run-time when needed.

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

2) mListView.setFastScrollEnabled(true);
Pawan Maheshwari
  • 15,088
  • 1
  • 48
  • 50