Fastscroll

A ListView-like FastScroller for Android’s RecyclerView.
Alternatives To Fastscroll
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Ultimaterecyclerview7,164
3 years ago1March 30, 2015184apache-2.0Java
A RecyclerView(advanced and flexible version of ListView in Android) with refreshing,loading more,animation and many other features.
Videoplayermanager2,946
4 years ago87Java
This is a project designed to help controlling Android MediaPlayer class. It makes it easier to use MediaPlayer ListView and RecyclerView. Also it tracks the most visible item in scrolling list. When new item in the list become the most visible, this library gives an API to track it.
React Native Gifted Listview1,56513665 years ago15May 12, 201646mitJavaScript
✌️ ListView with pull-to-refresh and infinite scrolling for Android and iOS React-Native apps
Fastscroll840
a year ago4August 22, 2022apache-2.0Kotlin
A ListView-like FastScroller for Android’s RecyclerView.
React Native Ultimate Listview48667103 years ago7March 14, 202234mitJavaScript
A high performance FlatList providing customised pull-to-refresh | auto-pagination & infinite-scrolling | gridview layout | swipeable-row.
Quickscroll462
123 years ago1January 14, 20149Java
[Development stopped in 2014. Unfinished and not stable - not recommended to use.] Bringing extended scrolling features to Android's native ListView and ExpandableListView.
React Gridlist38823 years ago3November 02, 2020mitTypeScript
A virtual-scrolling GridList component based on CSS Grids
Quickreturnheader384
10 years ago9apache-2.0Java
A ListView/ScrollView header that hides when scrolling down and reappears immediately when scrolling up, regardless of how far down the list we've gone. Like the one from the Google Keep app.
Android Pulltorefreshrecyclerview382
7 years ago25Java
A RecyclerView library for Android which support pull-to-refresh ,auto-load-more and add header.
Incrementally_loading_listview137
32 years ago14June 20, 20211otherDart
An extension of the Flutter ListView widget for incrementally loading items upon scrolling
Alternatives To Fastscroll
Select To Compare


Alternative Project Comparisons
Readme

FastScroll

License API Download Workflow

A ListView-like FastScroller for Androids RecyclerView.

screenshot

FastScroll brings the popular fast scrolling and section indexing features of Androids ListView to the RecyclerView with a Lollipop styled scrollbar and section bubble view. The scrollbar provides a handle for quickly navigating a list while the bubble view displays the currently visible section index.

FastScroll was inspired by this Styling Android blog post.

Download

Gradle:

dependencies {
    implementation "io.github.l4digital:fastscroll:2.1.0"
}

Maven:

<dependency>
  <groupId>io.github.l4digital</groupId>
  <artifactId>fastscroll</artifactId>
  <version>2.1.0</version>
</dependency>

Usage

There are a few ways to implement the FastScroll library:

  • The FastScrollRecyclerView is a RecyclerView that creates and adds the FastScroller to its parent ViewGroup.

  • The FastScrollView is a layout that creates and manages a RecyclerView with a FastScroller. FastScrollView is particularly useful when the parent ViewGroup requires a single child view, for example a SwipeRefreshLayout.

FastScrollRecyclerView:

Add the FastScrollRecyclerView to your xml layout and set your customizations using attributes.

The parent ViewGroup must be a ConstraintLayout, CoordinatorLayout, FrameLayout, or RelativeLayout in order for the FastScroller to be properly displayed on top of the RecyclerView.

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.l4digital.fastscroll.FastScrollRecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:bubbleColor="#00bb00"
        app:bubbleTextColor="#ffffff"
        app:handleColor="#999999" />

</FrameLayout>

FastScrollRecyclerView extends Android's RecyclerView and can be setup the same way.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_example)

    findViewById<FastScrollRecyclerView>(R.id.recycler_view).apply {
        layoutManager = LinearLayoutManager(context)
        adapter = ExampleAdapter()
    }
}

Implement the FastScroller.SectionIndexer interface in your RecyclerView Adapter and override getSectionText().

class ExampleAdapter : RecyclerView.Adapter<ExampleAdapter.ViewHolder>(), FastScroller.SectionIndexer {

    // ...

    override fun getSectionText(position: Int) = getItem(position).getSectionIndex()
}

FastScrollView:

Add the FastScrollView to your xml layout and set your customizations using attributes.

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.l4digital.fastscroll.FastScrollView
        android:id="@+id/fastscroll_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:bubbleColor="#00bb00"
        app:bubbleTextColor="#ffffff"
        app:handleColor="#999999" />

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

FastScrollView contains a RecyclerView and a FastScroller that can be accessed with public methods.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_example)

    findViewById<FastScrollView>(R.id.fastscroll_view).apply {
        setLayoutManager(LinearLayoutManager(context))
        setAdapter(ExampleAdapter())
    }
}

Implement the FastScroller.SectionIndexer interface in your RecyclerView Adapter and override getSectionText().

class ExampleAdapter : RecyclerView.Adapter<ExampleAdapter.ViewHolder>(), FastScroller.SectionIndexer {

    // ...

    override fun getSectionText(position: Int) = getItem(position).getSectionIndex()
}

Alternative Usage:

If you are unable to use the FastScrollRecyclerView or FastScrollView, you can add a FastScroller to your layout and implement with any RecyclerView. See this github issue for an example.

FastScrollListener:

An optional FastScrollListener can be added to receive events when fast scrolling starts or stops.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_example)

    findViewById<FastScrollRecyclerView>(R.id.recycler_view).apply {
        setFastScrollListener(object : FastScroller.FastScrollListener {
            override fun onFastScrollStart(fastScroller: FastScroller) {
                // fast scroll started
            }

            override fun onFastScrollStop(fastScroller: FastScroller) {
                // fast scroll stopped
            }
        })
    }
}

Customization

The following attributes can be set to customize the visibility and appearance of the elements within the FastScroller view:

  • app:hideScrollbar=["true" | "false"] Hides the scrollbar when not scrolling
  • app:showBubble=["true" | "false"] Shows the section bubble while fast scrolling
  • app:showBubbleAlways=["true" | "false"] Shows the section bubble while scrolling
  • app:showTrack=["true" | "false"] Shows the scroll track while scrolling
  • app:handleColor=["#rrggbb" | "@color"] Sets the color of the scroll handle
  • app:trackColor=["#rrggbb" | "@color"] Sets the color of the scroll track
  • app:bubbleColor=["#rrggbb" | "@color"] Sets the background color of the section bubble
  • app:bubbleSize=["normal" | "small"] Sets the size of the section bubble
  • app:bubbleTextColor=["#rrggbb" | "@color"] Sets the text color of the section bubble
  • app:bubbleTextSize=["sp" | "@dimen"] Sets the scaled pixel text size of the section bubble

License

Copyright 2022 Randy Webster. All rights reserved.

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.
Popular Scrolling Projects
Popular Listview Projects
Popular User Interface Components Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Kotlin
Scrolling
Listview
Scrollbar
Viewgroup