An open source Android library that provides a floating group view at the top of the ExpandableListView

Overview

FloatingGroupExpandableListView

FloatingGroupExpandableListView is a huge name an open source Android library that provides a floating group view (aka anchored / pinned / sticky section header) at the top of the ExpandableListView. This lib is based on Emil Sjölander's StickyListHeaders.

Sample Screenshot Sample Animation

Features

  • Works with list headers, footers, dividers and padding.
  • Works with partially transparent or hidden group views.
  • Handles touch events on the floating group view properly.
  • Allows group transition animation.

Sample Application

Get it on Google Play

The sample app project code is also included on this repository.

Usage

The FloatingGroupExpandableListView is very easy to setup. You just need a few steps:

  1. Add the FloatingGroupExpandableListView to your xml file. It will look something like this:

    <com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView
    android:id="@+id/my_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
  2. Then add these lines to your java code (usually on your Activity.onCreate() or Fragment.onCreateView() method):

    FloatingGroupExpandableListView myList = (FloatingGroupExpandableListView) findViewById(R.id.my_list);
    BaseExpandableListAdapter myAdapter = new MyAdapter();
    WrapperExpandableListAdapter wrapperAdapter = new WrapperExpandableListAdapter(myAdapter);
    myList.setAdapter(wrapperAdapter);
  3. That's it! You're ready to go! For a complete implementation, you can take a look at the sample project.

Gradle

Add the following dependency to your build.gradle file:

dependencies {
    compile 'com.diegocarloslima:fgelv:0.1.+@aar'
}

Used by

Call recorder (2 in 1) (Free)

Tourism Coast Atlantic Forest

Let me know if you are using this lib in your app. I'll be glad to put your app name here :).

Contributing

Pull requests with bug fixes or new features are always welcome :), but please, send me a separate pull request for each bug fix or feature. Also, you can contact me to discuss a new feature before implementing it.

Developed By

Diego Carlos Lima: [email protected]

License

Copyright 2013 Diego Carlos Lima

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
  • 1st Group not clickable/expandable

    1st Group not clickable/expandable

    Hi, I just discovered your library and I must say it is amazing! One bug I found (except for the reflection errors in older API versions other people have mentioned) is that the first group header in my list does not expand when clicked (all other groups work well and as expected). I have tried debugging the matter and it should not be happening, since the click is not dispatched to the floating group (as it shouldn't be) and it is passed to super.discpatchTouchEvent(). It seems that the floating header is actually picking up the click somehow, though. Maybe it has something to do with my headers layout (they are simple horizontal linear layouts with android:clickable=false, having a textview and a button with a click handler as children). Any suggestions would be appreciated...

    enhancement 
    opened by nemphys 9
  • NullPointerException in view measure

    NullPointerException in view measure

    Hi, My app is crashing on scrolling the list in emulator and some Sony Ericsson devices. I found that the crash started coming after this commit https://github.com/diegocarloslima/FloatingGroupExpandableListView/commit/1e3f7b0c9400d110a8c6df047ceb2ffcc7ef80d1 According to the error logs, the crash is because of a NullPointerException in RelativeLayout.onMeasure - which is called by mFloatingGroupView.measure(childWidthSpec, childHeightSpec);

    bug 
    opened by prateek1306 6
  • IllegalStateException because FloatingGroupExpandableListView was never registered

    IllegalStateException because FloatingGroupExpandableListView was never registered

    This library is fantastic, but there is one issue that is keeping me from using it. For some reason, if I navigate away from a fragment that uses a FloatingGroupExpandableListView, I get an IllegalStateException because the library tries to call unregisterDataSetObserver, despite my not using an observer, and never having registered the view. Stack trace is below:

    06-09 19:23:47.308    1919-1919/com.example.android.myapp.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: com.example.android.myapp.app, PID: 1919
        java.lang.IllegalStateException: Observer com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView$6@52a1d58c was not registered.
                at android.database.Observable.unregisterObserver(Observable.java:69)
                at android.widget.BaseExpandableListAdapter.unregisterDataSetObserver(BaseExpandableListAdapter.java:42)
                at com.diegocarloslima.fgelv.lib.WrapperExpandableListAdapter.unregisterDataSetObserver(WrapperExpandableListAdapter.java:29)
                at com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.onDetachedFromWindow(FloatingGroupExpandableListView.java:195)
                at android.view.View.dispatchDetachedFromWindow(View.java:12620)
                at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2587)
                at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2585)
                at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3845)
                at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3818)
                at android.view.ViewGroup.removeView(ViewGroup.java:3750)
                at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:983)
                at android.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1167)
                at android.app.BackStackRecord.run(BackStackRecord.java:641)
                at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
                at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
                at android.os.Handler.handleCallback(Handler.java:733)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:136)
                at android.app.ActivityThread.main(ActivityThread.java:5017)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                at dalvik.system.NativeStart.main(Native Method)
    
    bug 
    opened by shekibobo 5
  • How to get fixed headers irrespective of the child view container height

    How to get fixed headers irrespective of the child view container height

    First thank you for this awesome library :)

    I am using three group headers... everything runs fine as long as the middle group header have limited number in number of items. However when the number of items within the second header is large, the other headers are pushed out of the viewing container although we can still scroll and go to that header but, that is not the desired behaviour I was looking for.

    Is there a way I can make all the headers stick to their place?

    question 
    opened by navaneet 4
  • Item selection is lost after group expand/collapse

    Item selection is lost after group expand/collapse

    Hi! :-) We can initialize the FloatingGroupExpandableListView with the listSelector to have list items highlighted on item click. However, that selection is lost after any group (even the group that doesn't hold the tapped item) expand/collapse.

    I believe that the item selection should not be lost at group expanding/collapsing because expand/collapse is just a way of data visualization, while the data is the same (e.g. with one selected item).

    What do you think about it? Thanks

    enhancement 
    opened by AlexNab 4
  • Relative View as root VIew for headers

    Relative View as root VIew for headers

    Hi, thanks for this nice code. It works fine, if I use a LinearLayout as parent rootView of a group item. If I use a RelativeLayout as parent of a group item there happens something buggy.

    question 
    opened by tfwalther 4
  • java.lang.ClassCastException

    java.lang.ClassCastException

    When I touched and begin to scroll, it just crashed.

    java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams at com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.createFloatingGroupView(FloatingGroupExpandableListView.java:416)

    bug 
    opened by imoblife 3
  • NPE at xml layout

    NPE at xml layout

    Hi Diego, I got NPE whenever I open xml file that contains <com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none" />

    Take a look at the picture capture

    and here is the full log:

    java.lang.NullPointerException Exception details are logged in Window > Show View > Error Log

    java.lang.NullPointerException at android.widget.ExpandableListView.getFlatListPosition(ExpandableListView.java:911) at com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.drawDefaultSelector(FloatingGroupExpandableListView.java:458) at com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.dispatchDraw(FloatingGroupExpandableListView.java:203) at android.view.View.draw(View.java:14468) at android.widget.AbsListView.draw(AbsListView.java:3817) at android.view.View.draw(View.java:14350) at android.view.ViewGroup.drawChild(ViewGroup.java:3103) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) at android.view.View.draw(View.java:14348) at android.view.ViewGroup.drawChild(ViewGroup.java:3103) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) at android.view.View.draw(View.java:14348) at android.view.ViewGroup.drawChild(ViewGroup.java:3103) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) at android.view.View.draw(View.java:14468) at android.view.View.draw(View.java:14350) at android.view.ViewGroup.drawChild(ViewGroup.java:3103) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) at android.view.View.draw(View.java:14348) at android.view.ViewGroup.drawChild(ViewGroup.java:3103) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) at android.view.View.draw(View.java:14468) at android.view.View.draw(View.java:14350) at android.view.ViewGroup.drawChild(ViewGroup.java:3103) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) at android.view.View.draw(View.java:14468)

    It's not cause any error in the app but it prevent editing the xml file in graphical.

    bug 
    opened by mpkr 3
  • IndexOutOfBoundsException when clear the header or item array

    IndexOutOfBoundsException when clear the header or item array

    I found this library and it's exactly what I'm looking for. My arrays for header and items are parsed by JSON string, and I have a refresh button on my app. So whenever I press the refresh button, I need to clear the adapter to remove old data and insert new data. But I got the error below:

    04-08 16:23:52.151: E/AndroidRuntime(26743): FATAL EXCEPTION: main 04-08 16:23:52.151: E/AndroidRuntime(26743): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 04-08 16:23:52.151: E/AndroidRuntime(26743): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 04-08 16:23:52.151: E/AndroidRuntime(26743): at java.util.ArrayList.get(ArrayList.java:308) 04-08 16:23:52.151: E/AndroidRuntime(26743): at com.pnminh.dfytask.adapter.ExpandableListAdapter.getChildrenCount(ExpandableListAdapter.java:94) 04-08 16:23:52.151: E/AndroidRuntime(26743): at com.diegocarloslima.fgelv.lib.WrapperExpandableListAdapter.getChildrenCount(WrapperExpandableListAdapter.java:49) 04-08 16:23:52.151: E/AndroidRuntime(26743): at com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.drawFloatingGroupIndicator(FloatingGroupExpandableListView.java:446) 04-08 16:23:52.151: E/AndroidRuntime(26743): at com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.dispatchDraw(FloatingGroupExpandableListView.java:171) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14856) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.widget.AbsListView.draw(AbsListView.java:5051) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13744) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13786) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14563) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.drawChild(ViewGroup.java:3316) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14856) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13744) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13786) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14563) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.drawChild(ViewGroup.java:3316) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13739) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13786) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14563) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.drawChild(ViewGroup.java:3316) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14856) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.support.v4.view.ViewPager.draw(ViewPager.java:2171) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13744) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13786) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14563) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.drawChild(ViewGroup.java:3316) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13739) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13786) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14563) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.drawChild(ViewGroup.java:3316) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13739) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13786) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14563) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.drawChild(ViewGroup.java:3316) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3153) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.draw(View.java:14856) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.widget.FrameLayout.draw(FrameLayout.java:467) 04-08 16:23:52.151: E/AndroidRuntime(26743): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2621) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13744) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.View.getDisplayList(View.java:13786) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1411) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1359) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2677) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2541) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2156) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1251) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6379) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.Choreographer.doCallbacks(Choreographer.java:591) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.Choreographer.doFrame(Choreographer.java:561) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.os.Handler.handleCallback(Handler.java:730) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.os.Handler.dispatchMessage(Handler.java:92) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.os.Looper.loop(Looper.java:137) 04-08 16:23:52.151: E/AndroidRuntime(26743): at android.app.ActivityThread.main(ActivityThread.java:5493) 04-08 16:23:52.151: E/AndroidRuntime(26743): at java.lang.reflect.Method.invokeNative(Native Method) 04-08 16:23:52.151: E/AndroidRuntime(26743): at java.lang.reflect.Method.invoke(Method.java:525) 04-08 16:23:52.151: E/AndroidRuntime(26743): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit

    Could you walk me through this problem? Thank you very much

    bug 
    opened by mpkr 3
  • Pinned group view has changed height

    Pinned group view has changed height

    Hi Diego, At the moment group view may have different heights based on the state: pinned or not. Imagine that we have group views with fixed height of 100dp (I've added a grey background to visualize group view bounds): http://i.imgur.com/C2xEige.png - looks fine.

    However, when the group view becomes pinned it will look like that: http://i.imgur.com/ewyK4aB.png - as you can see group view height was changed!

    Steps to reproduce

    1. take the stock FloatingGroupExpandableListView sample
    2. at sample_activity_list_group_item.xml change root layout height from android:layout_height="wrap_content" to android:layout_height="100dp". So we want to have fixed height to groups which is perfectly normal.
    3. at SampleAdapter.java change next line at getGroupView method from: v = mLayoutInflater.inflate(R.layout.sample_activity_list_group_item, null); to v = mLayoutInflater.inflate(R.layout.sample_activity_list_group_item, parent, false);

    Reason the real reason is how you inflate the group view at step 3. When we call mLayoutInflater.inflate without parent param inflater will ignores original layout params of the group layout (so we loose 100dp height). And seems the same you do when pin the group view, so it ignores initial view size and measure it as min height + paddings. Which is not fine. Group view should looks the same pinned and unpinned.

    You may want to read a good explanation of the proper layout inflater usage at: http://www.doubleencore.com/2013/05/layout-inflation-as-intended/

    Thanks

    enhancement 
    opened by AlexNab 2
  • Contextmenu problem

    Contextmenu problem

    Hello,

    I have registered a context menu on the listview.

    //Activity
    listView = (FloatingGroupExpandableListView) view.findViewById(android.R.id.list);
    registerForContextMenu(listView);
    
    • Child-Items -> Works
    • Group-Items position > 1 -> Works

    Long press of the Frist Group-Item or Floating-Group-Items don't call the onCreateContextMenu.

    Have you a idea to solve the problem?

    enhancement 
    opened by xeno010 2
  • Crash issue in Adroid 10

    Crash issue in Adroid 10

    2020-07-24 00:44:21.690 7989-7989/com.KryptosTextApp.KryptosText E/AndroidRuntime: FATAL EXCEPTION: main Process: com.KryptosTextApp.KryptosText, PID: 7989 java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference at com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.dispatchDraw(FloatingGroupExpandableListView.java:192) at android.view.View.draw(View.java:21424) at android.widget.AbsListView.draw(AbsListView.java:4388) at android.view.View.updateDisplayListIfDirty(View.java:20298) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.draw(View.java:21424) at android.view.View.updateDisplayListIfDirty(View.java:20298) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.draw(View.java:21424) at androidx.viewpager.widget.ViewPager.draw(ViewPager.java:2426) at android.view.View.updateDisplayListIfDirty(View.java:20298) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1277) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.draw(View.java:21424) at android.view.View.updateDisplayListIfDirty(View.java:20298) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1478) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.draw(View.java:21424) at android.view.View.updateDisplayListIfDirty(View.java:20298) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149) 2020-07-24 00:44:21.693 7989-7989/com.KryptosTextApp.KryptosText E/AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:20289) at android.view.View.draw(View.java:21153) at android.view.ViewGroup.drawChild(ViewGroup.java:4388)

    opened by Ktirumalsetty 6
  • How to add an OnChildClickListener?

    How to add an OnChildClickListener?

    Dear Diego,

    great piece of software you have there. It almost worked out of the box for me. The only problem is that the OnChildClickListener which I had implemented in the same fragment where I also set up your FloatingGroupExpandableListView does not get called anymore, as it was the case before I used your extension. How would I implement such a listener while using your lib? Thanks for your answer!

    Cordially, CK

    opened by kalabalik 2
  • fix WrapperExpandableListAdapter :

    fix WrapperExpandableListAdapter :

    override (getChildType / getChildTypeCount) and (getGroupType /getGroupTypeCount) to make the group list and the child list could display different style layout

    opened by walkermanx 1
  • How to maintain Unique position for child items

    How to maintain Unique position for child items

    Hi @diegocarloslima,

    Thanks for sharing this. I'm facing the following issue while implementing my custom child view xml .

    My implementation is, Assuming i had 10 set of groups each group contains 5 child element. In my child view i have a button a textview when i click button the count will be increased ie (1,2,3....) this will be displayed in the textview.

    My problem is i clicked the button which is in Group 1's first child ie (G1 - C0) but it also reflects in all groups first child. How can i solve this. please reply back asap. Thanks in advance

    opened by alphaDroid89 0
Releases(0.1.2)
Owner
Diego Lima
Learning a bit every day.
Diego Lima
A better ExpandableListView, with animated expandable views for each list item

SlideExpandableListView for Android Not happy with the Android ExpandableListView android offers? Want something like the Spotify app. This library al

Tjerk Wolterink 2k Dec 22, 2022
StackExpandableView - A custom view that resembles the iOS notification group behavior

StackExpandableView - A custom view that resembles the iOS notification group behavior

Fabio Sassu 155 Dec 15, 2022
A small android library for tagging views inside a ScrollView as "sticky" making them stick to the top of the scroll container until a new sticky view comes and takes it's place

StickyScrollViewItems StickyScrollViewItems is a ScrollView subclass that allowed you to mark items inside the ScrollView as sticky. The items marked

Emil Sjölander 1k Jan 7, 2023
An android library for section headers that stick to the top

StickyListHeaders StickyListHeaders is an Android library that makes it easy to integrate section headers in your ListView. These section headers stic

Emil Sjölander 5.5k Jan 5, 2023
A generic, customizable, open source Android ListView implementation that has 'Pull to Refresh' functionality.

Android 'Pull to Refresh' ListView library Demo video: http://www.youtube.com/watch?v=VjmdELnm3GI Project A generic, customizable, open source Android

Erik Wallentinsen 639 Nov 17, 2022
This is a very simple library for Android that allows you to stick an header to a scrollable view and easily apply animation to it

StikkyHeader This is a very simple library for Android that allows you to stick an header to a ListView and easily apply animation to it Usage To use

Carlo Marinangeli 847 Dec 30, 2022
Horizontal list view for Android which allows variable items widths

Deprecated This widget is now deprecated and it won't be updated anymore. Use RecyclerView instead Horizontal Variable ListView Horizontal ListView fo

Alessandro Crugnola 862 Nov 15, 2022
Expandable Recyclerview makes it easy to integrate nested recycler view...🔨 📝

SSExpandableRecyclerView Expandable Recyclerview make it easy to integrate nested recyclerview Features Simple and easy to use ( no complex adapter re

Simform Solutions 52 Nov 1, 2022
Android library to observe scroll events on scrollable views.

Android-ObservableScrollView Android library to observe scroll events on scrollable views. It's easy to interact with the Toolbar introduced in Androi

Soichiro Kashima 9.6k Dec 30, 2022
Android library to achieve in an easy way, the behaviour of the home page in the Expedia app, with a pair of auto-scroll circular parallax ListViews.

ListBuddies This library is not maintained anymore and there will be no further releases Android library of a pair of auto-scroll circular parallax Li

JPARDOGO 970 Dec 29, 2022
Android library to display a ListView whose cells are not rigid but flabby and react to ListView scroll.

FlabbyListView This library is not maintained anymore and there will be no further releases Android library to display a ListView which cells are not

JPARDOGO 762 Nov 23, 2022
Android library that allows you to bind a LinearLayout with a ListAdapter.

LinearListView Android library that allows you to bind a LinearLayout with a ListAdapter. Download Gradle: dependencies { compile 'com.github.franki

Francesco Sardo 571 Dec 22, 2022
An easy to use Drag & Drop List for Android. Direct replacement of the android ListView.

DragNDropListView DragNDropListView is a direct replacement for the stock Android ListView. If you know how to use ListView, you already know how to u

null 187 Dec 22, 2022
Easy to use ListView with pinned sections for Android.

Easy to use ListView with pinned sections for Android 2.1 and higher. Pinned section is a header view which sticks to the top of the list until at lea

Sergej Shafarenka 2.6k Dec 21, 2022
This project aims to provide a reusable pull to refresh widget for Android.

Pull To Refresh for Android Note This library is deprecated, a swipe refresh layout is available in the v4 support library. This project aims to provi

Johan Berg 2.5k Jan 2, 2023
An Android custom ListView and ScrollView with pull to zoom-in.

PullZoomView An Android custom ListView and ScrollView with pull to zoom-in. Features Set ZoomView enable Add HeaderView Custom ZoomView Parallax or N

Frank-Zhu 2.3k Dec 26, 2022
Lazy load of images in Android

LazyList A simple library to display images in Android ListView. Images are being downloaded asynchronously in the background. Images are being cached

Fedor Vlasov 1.2k Nov 15, 2022
Android widget with pull to refresh for all the views,and support loadMore for ListView , RecyclerView, GridView and SwipeRefreshLayout.

CommonPullToRefresh Android widget with pull to refresh for all the views,and support loadMore for ListView,RecyclerView,GridView and SwipeRefreshLayo

null 1.1k Nov 10, 2022
HorizontalListView is an Android ListView widget which scrolls in a horizontal manner (in contrast with the SDK-provided ListView which scrolls vertically).

HorizontalListView HorizontalListView is an Android ListView widget which scrolls in a horizontal manner (in contrast with the SDK-provided ListView w

MeetMe 722 Nov 10, 2022