Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Ultimaterecyclerview | 7,164 | 3 years ago | 1 | March 30, 2015 | 184 | apache-2.0 | Java | |||
A RecyclerView(advanced and flexible version of ListView in Android) with refreshing,loading more,animation and many other features. | ||||||||||
Videoplayermanager | 2,946 | 4 years ago | 87 | Java | ||||||
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 Listview | 1,565 | 136 | 6 | 5 years ago | 15 | May 12, 2016 | 46 | mit | JavaScript | |
✌️ ListView with pull-to-refresh and infinite scrolling for Android and iOS React-Native apps | ||||||||||
Fastscroll | 840 | a year ago | 4 | August 22, 2022 | apache-2.0 | Kotlin | ||||
A ListView-like FastScroller for Android’s RecyclerView. | ||||||||||
React Native Ultimate Listview | 486 | 67 | 10 | 3 years ago | 7 | March 14, 2022 | 34 | mit | JavaScript | |
A high performance FlatList providing customised pull-to-refresh | auto-pagination & infinite-scrolling | gridview layout | swipeable-row. | ||||||||||
Quickscroll | 462 | 12 | 3 years ago | 1 | January 14, 2014 | 9 | Java | |||
[Development stopped in 2014. Unfinished and not stable - not recommended to use.] Bringing extended scrolling features to Android's native ListView and ExpandableListView. | ||||||||||
React Gridlist | 388 | 2 | 3 years ago | 3 | November 02, 2020 | mit | TypeScript | |||
A virtual-scrolling GridList component based on CSS Grids | ||||||||||
Quickreturnheader | 384 | 10 years ago | 9 | apache-2.0 | Java | |||||
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 Pulltorefreshrecyclerview | 382 | 7 years ago | 25 | Java | ||||||
A RecyclerView library for Android which support pull-to-refresh ,auto-load-more and add header. | ||||||||||
Incrementally_loading_listview | 137 | 3 | 2 years ago | 14 | June 20, 2021 | 1 | other | Dart | ||
An extension of the Flutter ListView widget for incrementally loading items upon scrolling |
A ListView-like FastScroller for Androids RecyclerView.
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.
dependencies {
implementation "io.github.l4digital:fastscroll:2.1.0"
}
<dependency>
<groupId>io.github.l4digital</groupId>
<artifactId>fastscroll</artifactId>
<version>2.1.0</version>
</dependency>
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
.
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()
}
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()
}
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.
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
}
})
}
}
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
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.