Convert Figma logo to code with AI

cymcsg logoUltimateRecyclerView

A RecyclerView(advanced and flexible version of ListView in Android) with refreshing,loading more,animation and many other features.

7,224
1,428
7,224
183

Top Related Projects

RecyclerView extension library which provides advanced features. (ex. Google's Inbox app like swiping, Play Music app like drag and drop sorting)

An Android Animation library which easily add itemanimator to RecyclerView items.

Android's TextView that can expand/collapse like the Google Play's app description

:octocat: 📃 FoldingCell is an expanding content cell with animation made by @Ramotion

Quick Overview

UltimateRecyclerView is an Android library that extends the functionality of the standard RecyclerView, providing additional features and customization options to enhance the user experience of Android applications.

Pros

  • Flexible and Customizable: UltimateRecyclerView allows developers to easily customize the appearance and behavior of the RecyclerView, including headers, footers, and empty views.
  • Enhanced Functionality: The library includes features such as swipe-to-dismiss, pull-to-refresh, and sticky headers, which can be easily integrated into the RecyclerView.
  • Performance Optimization: UltimateRecyclerView includes optimizations to improve the performance of the RecyclerView, such as automatic loading of items and efficient memory management.
  • Active Development and Community: The project has an active development team and a supportive community, ensuring ongoing improvements and bug fixes.

Cons

  • Steep Learning Curve: The library has a relatively steep learning curve, as it introduces a significant number of new features and customization options that may require time to understand and implement.
  • Potential Overhead: The additional features and customization options provided by UltimateRecyclerView may introduce some overhead, which could impact the overall performance of the application, especially on older or lower-end devices.
  • Dependency on External Libraries: The library relies on several external dependencies, which may increase the overall size of the application and introduce potential compatibility issues.
  • Limited Documentation: While the project has a README file, the documentation could be more comprehensive, making it challenging for new users to get started with the library.

Code Examples

Here are a few code examples demonstrating the usage of UltimateRecyclerView:

  1. Setting up the RecyclerView:
UltimateRecyclerView ultimateRecyclerView = findViewById(R.id.ultimate_recycler_view);
ultimateRecyclerView.setLayoutManager(new LinearLayoutManager(this));
ultimateRecyclerView.setAdapter(new MyAdapter());
  1. Adding a Header and Footer:
ultimateRecyclerView.setHeaderView(headerView);
ultimateRecyclerView.setFooterView(footerView);
  1. Enabling Swipe-to-Dismiss:
ultimateRecyclerView.enableSwipeToDismiss(new SwipeableItemClickListener() {
    @Override
    public void onItemClick(View view, int position) {
        // Handle item click
    }

    @Override
    public void onItemDismiss(int position) {
        // Handle item dismissal
    }
});
  1. Implementing Pull-to-Refresh:
ultimateRecyclerView.setDefaultOnRefreshListener(() -> {
    // Perform refresh logic
    ultimateRecyclerView.setRefreshing(false);
});

Getting Started

To get started with UltimateRecyclerView, follow these steps:

  1. Add the library to your project's build.gradle file:
dependencies {
    implementation 'com.github.cymcsg.UltimateRecyclerView:library:0.7.2'
}
  1. In your layout file, add the UltimateRecyclerView widget:
<com.marshalchen.ultimaterecyclerview.UltimateRecyclerView
    android:id="@+id/ultimate_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. In your activity or fragment, set up the UltimateRecyclerView and configure its behavior:
UltimateRecyclerView ultimateRecyclerView = findViewById(R.id.ultimate_recycler_view);
ultimateRecyclerView.setLayoutManager(new LinearLayoutManager(this));
ultimateRecyclerView.setAdapter(new MyAdapter());
ultimateRecyclerView.enableSwipeToDismiss(new SwipeableItemClickListener() {
    // Implement swipe-to-dismiss logic
});
ultimateRecyclerView.setDefaultOnRefreshListener(() -> {

Competitor Comparisons

RecyclerView extension library which provides advanced features. (ex. Google's Inbox app like swiping, Play Music app like drag and drop sorting)

Pros of android-advancedrecyclerview

  • Provides a more comprehensive set of features and functionality compared to UltimateRecyclerView, including support for drag-and-drop, swipe-to-dismiss, and expandable items.
  • Actively maintained with regular updates and bug fixes.
  • Extensive documentation and examples available to help developers get started.

Cons of android-advancedrecyclerview

  • Slightly more complex to set up and configure compared to UltimateRecyclerView, which has a more straightforward API.
  • May have a steeper learning curve for developers who are new to advanced RecyclerView features.

Code Comparison

UltimateRecyclerView:

UltimateRecyclerView ultimateRecyclerView = (UltimateRecyclerView) findViewById(R.id.ultimate_recycler_view);
ultimateRecyclerView.setLayoutManager(new LinearLayoutManager(this));
ultimateRecyclerView.setAdapter(new MyAdapter());

android-advancedrecyclerview:

AdvancedRecyclerView recyclerView = (AdvancedRecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new MyAdapter());
recyclerView.setSwipeableItemMangerInterface(new SwipeableItemManagerImpl(this));

An Android Animation library which easily add itemanimator to RecyclerView items.

Pros of RecyclerView Animators

  • Provides a wide range of pre-built animations for RecyclerView items, including fade, scale, slide, and more.
  • Allows for easy customization of animation properties, such as duration and interpolator.
  • Supports multiple animation types to be applied simultaneously.

Cons of RecyclerView Animators

  • Focuses solely on item animations, while UltimateRecyclerView offers a more comprehensive set of features.
  • May have a steeper learning curve for developers unfamiliar with the library.
  • Requires additional setup and configuration to integrate with a RecyclerView.

Code Comparison

RecyclerView Animators:

RecyclerView.Adapter adapter = new MyAdapter();
adapter.setAnimation(new SlideInLeftAnimation());
recyclerView.setAdapter(adapter);

UltimateRecyclerView:

UltimateRecyclerView ultimateRecyclerView = findViewById(R.id.ultimate_recycler_view);
ultimateRecyclerView.setLayoutManager(new LinearLayoutManager(this));
ultimateRecyclerView.setAdapter(new MyAdapter());
ultimateRecyclerView.enableLoadmore();

Android's TextView that can expand/collapse like the Google Play's app description

Pros of ExpandableTextView

  • Provides a simple and easy-to-use way to create expandable/collapsible text views in Android apps.
  • Supports customization of the expand/collapse button and text.
  • Integrates well with other UI components and can be used in various layouts.

Cons of ExpandableTextView

  • Limited functionality compared to UltimateRecyclerView, which offers a more comprehensive set of features for RecyclerView.
  • Doesn't provide the same level of flexibility and customization options as UltimateRecyclerView.

Code Comparison

ExpandableTextView:

expandableTextView.setOnExpandStateChangeListener(new ExpandableTextView.OnExpandStateChangeListener() {
    @Override
    public void onExpandStateChanged(TextView textView, boolean isExpanded) {
        // Handle expand/collapse state change
    }
});

UltimateRecyclerView:

ultimateRecyclerView.setOnLoadMoreListener(new UltimateRecyclerView.OnLoadMoreListener() {
    @Override
    public void loadMore(int itemsCount, int maxLastVisiblePosition) {
        // Handle load more functionality
    }
});

:octocat: 📃 FoldingCell is an expanding content cell with animation made by @Ramotion

Pros of Folding Cell

  • Folding Cell provides a unique and visually appealing UI component that can be used to display expandable content.
  • The library is well-documented and includes several examples to help developers get started.
  • Folding Cell is actively maintained and has a growing community of contributors.

Cons of Folding Cell

  • Folding Cell is a specialized UI component, while UltimateRecyclerView offers a more comprehensive set of features for building complex recycler views.
  • The library may not be as flexible or customizable as UltimateRecyclerView, which allows for more fine-grained control over the recycler view.
  • Folding Cell is primarily focused on the iOS platform, while UltimateRecyclerView is a cross-platform solution that works on both Android and iOS.

Code Comparison

Folding Cell (iOS)

let foldingCell = FoldingCell(style: .default, reuseIdentifier: "MyCell")
foldingCell.contentView.backgroundColor = .white
foldingCell.layer.cornerRadius = 10
foldingCell.layer.masksToBounds = true

UltimateRecyclerView (Android)

val ultimateRecyclerView = UltimateRecyclerView(context)
ultimateRecyclerView.layoutManager = LinearLayoutManager(context)
ultimateRecyclerView.adapter = MyAdapter()
ultimateRecyclerView.setHasFixedSize(true)

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

UltimateRecyclerView

Download LicenseStories in Ready

Master branch:Build Status

Dev branch:Build Status

Project website:https://github.com/cymcsg/UltimateRecyclerView

Description

UltimateRecyclerView is a RecyclerView(advanced and flexible version of ListView) with pulling to refresh, loading more, swiping to dismiss, draging and drop, animations ,sticky header,show or hide toolbar and FAB when scrolling and many other features.You can use it just like RecyclerView. Support AndroidX now.

Notice that UltimateRecyclerView is a project under development.

Your donations is highly appreciated. Thank you!

Features:

  • Swipe to refresh(using android.support.v4.widget.SwipeRefreshLayout)
  • Many kinds of animations
  • Swipe to dismiss
  • Parallax or normal head view
  • Drag and drop items
  • Loading more when reach the last item(infinite scrolling)
  • Custom views in loading more
  • Showing or hiding toolbar and floating button when scrolling
  • Scrollbars
  • Colorful styles of swipe to refresh
  • Sticky header like instagram
  • Support different layout in adapter
  • Loading adapter with animation
  • Expandable view in recyclerview

Quick Setup (Basic Usage)

1.Using Gradle:
repositories {
    jcenter()
    }
dependencies {
    ...
    compile 'com.marshalchen.ultimaterecyclerview:library:0.9.0'
}

or grab via Maven

<dependency>
  <groupId>com.marshalchen.ultimaterecyclerview</groupId>
  <artifactId>library</artifactId>
  <version>0.9.0</version>
</dependency>
2.Usage:
<com.marshalchen.ultimaterecyclerview.UltimateRecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/ultimate_recycler_view"
/>

For more details, you can read the Wiki and the demo of the project.

Version Log

  • v0.8.0 Migrate to AndroidX

  • v0.7.0 Support most features in Recyclerview 24.0.0. Improve the UltimateAdapter. Reduce the size of the library. Fix some bugs.

  • v0.5.8 In this version we are now based on support library 23.4.0. We have fixed the load more and disable load more function from early triggers. There is no need to change anything from their implementations. Please read up on the example code if you have any questions from the implementations.

  • v0.5.6 In this version we now have 23.3.0 support library and the min version is supported all the ways to v13. New added feature that allow us to adding have node connector on each item on linearlayoutmanager. By extending TimeLineView you will now have unlimited builds from the things that connected to each dot.

  • v0.5.0 this library will be based on v23.2.1 from now on. if you need have the v23.1.1 please go back to the previous release. detail of this upgrade please see #342

  • v0.4.9 This is the last version that will be based on V23.1.1. and this library will not be supported on this version. For further supports please refer to the latest release.

  • v0.3.11 There are still version that is based on 22.+

Upcoming features:

Notice that it might not be the latest version

Demo App / Sample Code:

  • Due to rapid updates and developments we have decided to host the demo APK on github
  • Check out this link for latest demonstration for the code
  • Video demo for grid layout demo
  • or you can check it out already compiled at Google Play
  • You can clone the project and compile it yourself (it includes a sample), or you can check it out already compiled at Google Play
  • You can read more usage in wiki and welcome to make your own tutorials in here.

Welcome to fork and PR (pull request)

If you have some good ideas, please tell us. My email is cymcsg # gmail.com.And it is a good idea to put your idea on the issue. If you want to use a rapid development framework for developing apps, you can try UltimateAndroid Framework.

Screenshot

ultimate_recyclerview ultimate_recyclerview ultimate_recyclerview ultimate_recyclerview ultimate_recyclerview grid_layout grid_layout admob expandable node multitype

Thanks

If there are someone who I do not mention here,please accept my sincerely appologies and tell me.

Donations:

Donate $9.99: [![$9.99](https://bytebucket.org/marshalchen/images/raw/9c442645492ddc10474416debf511a57a0367397/others/donate.jpg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5GYRYZVNAK2G2)

Alipay:donate

Bitcoin Donation Accepted wallet

License

Copyright 2014-present Marshal Chen

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.