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

Overview

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.
Comments
  • disableLoadmore() crash

    disableLoadmore() crash

    Hello,

    I initilaize the recyclerview and enable loadmore functionality. Then I make a REST call to get some data. On getting the data, I call disableLoadMore().

    When I am calling disableLoadmore(), I get the following error.

    FATAL EXCEPTION: main java.lang.NullPointerException at 
    com.marshalchen.ultimaterecyclerview.UltimateRecyclerView.disableLoadmore(UltimateRecyclerView.java:353)
    
    opened by xaxist 20
  • if no header and not data(list is null) and enableLoadmore, it will crash

    if no header and not data(list is null) and enableLoadmore, it will crash

    if no header and not data(list is null), but enableLoadmore, offset=1 in getItemCount(). It will call createViewHolder(ViewGroup parent, int viewType) in RecyclerView class. the holder is null and crashes.

        public final VH createViewHolder(ViewGroup parent, int viewType) {
            TraceCompat.beginSection(TRACE_CREATE_VIEW_TAG);
            final VH holder = onCreateViewHolder(parent, viewType);
            holder.mItemViewType = viewType;
            TraceCompat.endSection();
            return holder;
        }
    
    @Override
    public int getItemCount() {
        int offset = 0;
        if (hasHeaderView()) offset++;
        if (enableLoadMore()) offset++;
        // boolean a = enableLoadMore();
        // boolean b = hasHeaderView();
        return getAdapterItemCount() + offset;
    }
    

    image

    bug 
    opened by OVERSKY2003 15
  • recode the core.

    recode the core.

    First of all, thanks to @cymcsg for your amazing bundle from other library and we have been fixing bugs so far and its been your sole effort for the majority. Here I want to give you a special thanks for our hard works. However, looking at the contribution rate. We dont see the popular of contributions from the crowds. For my view of points, it is still such an headache to look at the code in one single large file. I think the recyclerview has been a maze for people to add their external efforts on combining their module.

    Basically, there are

    1. too many hardcoded things
    2. not many generic type
    3. not able to add module easily. I have read from other libraries and found some interesting implementation yet will able to keep this library as lightweight. Maybe we can try some effort to make this library more adaptable for developer crowd. Please read up this libray and give me some suggestions. Here I will response to all the previous query for the adaptable module features #222
    • [x] better control for the empty view to show or not
    • [x] fix load more on grid layout issue

    For this version of 0.4.0 we need to clear out all the most the popular issues from the previous posts.

    1. The first thing is the loadmore issue raised by all other developers.
    2. The second thing is the grid layout issues.
    duplicate enhancement question ready 
    opened by jjhesk 15
  • Recyclerview-v7-23.1.1 upgrade progress

    Recyclerview-v7-23.1.1 upgrade progress

    Since v23.1.1 has been phrasing out for a while, i decided to upgrade this library to adapter the latest convention. This will be a long track progress and it needs a new branch for this big mess. Welcome to make your PR for enhancement of this project. This upgrade is based on his work

    @alafighting This will answer the question from #288

    Please follow the latest publishing aar on jcenter. Download

    follow by the gradle code

    
    repositories {
        jcenter()
        maven { url "http://dl.bintray.com/jjhesk/maven" }
    }
    {
    compile 'com.hkm.slidingmenulib:libmenu:0.4.7'
    }
    
    enhancement wontfix in progress 
    opened by jjhesk 11
  • Dev

    Dev

    
    /**
         * This is the enhanced listview injection model that will be able to work with Googlge Admob, DoubleClick, and
         * related custom cell injection on the fly. It provides two specific options for the view to be taken place.
         * While insertOnce=true will increase the performance and false will slow down a little bit on the performance but it is insignificant.
         *
         * @param adview      The AD mob view
         * @param insertOnce  only insert once and hold into the adapter object, that means the ad will only shown once in the list view
         * @param setInterval the order of item to show the ad. if @insertOnce=false the ad will show on interval bases.
         * @param L           the data source
         */
        public AdmobAdapter(Adv adview, boolean insertOnce, int setInterval, List<T> L) {
            this(adview, insertOnce, setInterval, L, null);
        }
    
    

    I just did it.

    opened by jjhesk 11
  • A few proposals to improve this library

    A few proposals to improve this library

    1. add swapAdapter() functionality;
    2. setSwipeToDismissCallback() throws a null pointer exception if there is no adapter set;
    3. add getAdapter() method (useful thing);
    4. when no data in the adapter it would be great to show an empty view =)
    enhancement 
    opened by Zeliret 11
  • Bug in 0.3.10 - empty view shown though adapter count 10

    Bug in 0.3.10 - empty view shown though adapter count 10

    This is only in 0.3.10! 0.3.7 - adapter count 10 => no empty view is shown => correct 0.3.10 - adapter count 10 => empty view is shown => incorrect

    opened by Rainer-Lang 10
  • feature enhancement for quick adapter

    feature enhancement for quick adapter

    check out this adapter, it will give an even better view of the structure from the implementation. @cymcsg tell me what u think and if it is possible implement it. awesome implementation

    enhancement 
    opened by jjhesk 9
  • Empty view won't show when adapter item count is zero.

    Empty view won't show when adapter item count is zero.

    I set the attribute:

     swipe:recyclerviewEmptyView="@layout/tour_main_overview"
    

    and the item count is zero but the empty layout flashes for a second and disappears.

    bug 
    opened by Morteza-Rastgoo 9
  • [ProgressBar] Load more not showing

    [ProgressBar] Load more not showing

    HI, Im trying to use enabledMore feature, but when I scroll down, progress bar not showing, can you explain me how this works, and if there is some callback like onRefresh (pull from top) to loadmore... I was thinking in populate recycler from a paginated get service...

    Thanks,

    opened by HildonEduardo 9
  • NPE on touch loadMore layout...

    NPE on touch loadMore layout...

    when LoadMore layout is shown if user touches it, app crashes.

    java.lang.NullPointerException
            at com.marshalchen.ultimaterecyclerview.swipelistview.SwipeListViewTouchListener.setFrontView(SwipeListViewTouchListener.java:151)
            at com.marshalchen.ultimaterecyclerview.swipelistview.SwipeListViewTouchListener.onTouch(SwipeListViewTouchListener.java:827)
            at com.marshalchen.ultimaterecyclerview.swipelistview.SwipeListView.onInterceptTouchEvent(SwipeListView.java:689)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1859)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2169)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1613)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2539)
            at android.support.v7.internal.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:59)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2117)
            at android.view.View.dispatchPointerEvent(View.java:8005)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4274)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4153)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3688)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3738)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3707)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3818)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3715)
            at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3875)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3688)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3738)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3707)
            at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3715)
            at android.view.ViewRootImpl$In
    
    bug 
    opened by Morteza-Rastgoo 8
  • Backrgound color for sticky header

    Backrgound color for sticky header

    So my question, is there a way to change color of header when its stuck at top of recycler? So it will look like that, color for header beetwen items is white, but on header that is stuck at top it should be black, smt like that. Thx for help.

    opened by AndrewAln 0
  • The app crashes when using the

    The app crashes when using the "Delete" feature when deleting all images in the "LauncherActivity" menu

    Expected behavior

    Supposedly, when I use the delete feature to delete all images in the LauncherActivity menu, the app will not crash.

    Actual behavior

    When I go to the "LauncherActivity" menu and use the delete feature to delete all the images on the page, and when I continue to use the delete feature until all the images have been deleted, the application suddenly crashes.

    How to reproduce

    1. Install and open the app
    2. Go to the "LauncherActivity" menu
    3. Next use the delete feature and delete all images, continue to use the delete feature do not stop until the image all on the page is erased, then you will see the application will crash.

    • Device: Xiaomi Redmi 4X
    • Operating system: Marshmallow, 6.0.1 mmb29m (CPU: Octa-core Max 1.9 GHz, RAM: 2 GB)
    • Application Version: 1.7.0

    Recording Of The Bug

    Logcat

    05-23 23:41:56.457 11483 11483 E AndroidRuntime: Process: com.marshalchen.ultimaterecyclerview.demo, PID: 11483
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: java.lang.IllegalStateException: Added View has RecyclerView as parent but view is not a real child. Unfiltered index:0
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:7048)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:7012)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:7000)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1428)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:578)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3211)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3067)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3518)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:598)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at com.android.internal.policy.DecorView.onLayout(DecorView.java:730)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.View.layout(View.java:17663)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewGroup.layout(ViewGroup.java:5577)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2388)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2110)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1296)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6401)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:876)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.Choreographer.doCallbacks(Choreographer.java:688)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.Choreographer.doFrame(Choreographer.java:623)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:862)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:754)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:95)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:163)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6361)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
    05-23 23:41:56.457 11483 11483 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
    ```
    opened by ahyar92 0
  • Handle empty view with AdapterDataObserver

    Handle empty view with AdapterDataObserver

    Hi team, please take a look at this function

    If I set empty adapter at the first time view created

    1. updateHelperDisplays will be called
    2. isFirstLoadingOnlineAdapter will become true, and there is nowhere to set it false again
    3. if mEmptyView is not null and data size = 0, then mEmpty will be gone?

    Correct me if I am wrong: Lately when I call notifyDataSetChanged(), the function above (in red square) will never call again, so there is no change for mEmpty be visible again?

    Expected: When data change, the empty view should be visible/gone base on data size. I don't want to use show/hide empty view explicitly, it will be painful to control states. Because UltimateRecyclerView already has AdapterDataObserver so I expect it could update UI base on data size.

    Thanks

    opened by phatnhse 0
Releases(v0.7.0)
Owner
MarshalChen
MarshalChen
ANDROID. ChipsLayoutManager (SpanLayoutManager, FlowLayoutManager). A custom layout manager for RecyclerView which mimicric TextView span behaviour, flow layouts behaviour with support of amazing recyclerView features

ChipsLayoutManager This is ChipsLayoutManager - custom Recycler View's LayoutManager which moves item to the next line when no space left on the curre

Oleg Beloy 3.2k Dec 25, 2022
Android Library to provide swipe, click and other functionality to RecyclerView

RecyclerViewEnhanced Android Library to provide swipe, click and other functionality to RecyclerView Usage Add this to your build.gradle file dependen

Nikhil Panju 1k Dec 29, 2022
Android Library to provide swipe, click and other functionality to RecyclerView

RecyclerViewEnhanced Android Library to provide swipe, click and other functionality to RecyclerView Usage Add this to your build.gradle file dependen

Nikhil Panju 1k Dec 29, 2022
An Android Animation library which easily add itemanimator to RecyclerView items.

RecyclerView Animators RecyclerView Animators is an Android library that allows developers to easily create RecyclerView with animations. Please feel

Daichi Furiya 11.2k Jan 8, 2023
TikTok-RecyclerView - This is a demo app built using 'Koin' a new dependency injection framework for Android along with RecyclerView and ExoPlayer2.

TikTok-RecyclerView Demo About This is a demo app built using 'Koin' a new dependency injection framework for Android along with RecyclerView and ExoP

Baljeet Singh 19 Dec 28, 2022
A RecyclerView that implements pullrefresh and loadingmore featrues.you can use it like a standard RecyclerView

XRecyclerView a RecyclerView that implements pullrefresh , loadingmore and header featrues.you can use it like a standard RecyclerView. you don't need

XRecyclerView 5.3k Dec 26, 2022
A RecyclerView that implements pullrefresh and loadingmore featrues.you can use it like a standard RecyclerView

XRecyclerView a RecyclerView that implements pullrefresh , loadingmore and header featrues.you can use it like a standard RecyclerView. you don't need

XRecyclerView 5.3k Dec 26, 2022
Pagination-RecyclerView - Simple and easy way to Paginating a RecyclerView

Pagination-RecyclerView Simple and easy way to Paginating a RecyclerView Android

Rakshit Nawani 0 Jan 3, 2022
Carousel Recyclerview let's you create carousel layout with the power of recyclerview by creating custom layout manager.

Carousel Recyclerview let's you create carousel layout with the power of recyclerview by creating custom layout manager.

Jack and phantom 504 Dec 25, 2022
RecyclerView : SleepQualityTracker with RecyclerView app

RecyclerView - SleepQualityTracker with RecyclerView app SleepQualityTracker with RecyclerView This app builds on the SleepQualityTracker developed pr

Kevin 2 May 14, 2022
A custom recycler view with shimmer views to indicate that views are loading.

ShimmerRecyclerView Intro A custom recycler view with shimmer views to indicate that views are loading. The recycler view has a built-in adapter to co

Harish Sridharan 3.8k Dec 31, 2022
[] Super fast and easy way to create header for Android RecyclerView

DEPRECATED I created this library back in the day when I thought RecyclerView was all new and difficult. Writing an adapter that could inflate multipl

Bartek Lipinski 1.3k Dec 28, 2022
Android library for RecyclerView to manage order of items and multiple view types.

recyclerview-binder Android Library for RecyclerView to manage order of items and multiple view types. Features Insert any items to wherever you want

Satoru Fujiwara 185 Nov 15, 2022
A lightweight synchronizer between Android's TabLayout and RecyclerView.

TabSync A lightweight synchronizer between Android's TabLayout and RecyclerView. The behavior of the synchronizer is that as you scroll through the Re

Ahmad Hamwi 93 Dec 20, 2022
[UNMAINTAINED] Sticky Headers decorator for Android's RecyclerView

This project is no longer being maintained sticky-headers-recyclerview This decorator allows you to easily create section headers for RecyclerViews us

timehop 3.7k Jan 8, 2023
Android library providing simple way to control divider items (ItemDecoration) of RecyclerView

RecyclerView-FlexibleDivider Android library providing simple way to control divider items of RecyclerView Release Note [Release Note] (https://github

Yoshihito Ikeda 2.4k Dec 18, 2022
Android library defining adapter classes of RecyclerView to manage multiple view types

RecyclerView-MultipleViewTypeAdapter RecyclerView adapter classes for managing multiple view types Release Note [Release Note] (https://github.com/yqr

Yoshihito Ikeda 414 Nov 21, 2022
ItemDecoration for RecyclerView using LinearLayoutManager for Android

RecyclerItemDecoration RecyclerItemDecoration allows you to draw divider between items in recyclerview with multiple ViewType without considering item

magiepooh 328 Dec 27, 2022