GithubHelp home page GithubHelp logo

donkingliang / groupedrecyclerviewadapter Goto Github PK

View Code? Open in Web Editor NEW
1.6K 28.0 215.0 2.84 MB

GroupedRecyclerViewAdapter可以很方便的实现RecyclerView的分组显示,并且每个组都可以包含组头、组尾和子项;可以方便实现多种Type类型的列表,可以实现如QQ联系人的列表一样的列表展开收起功能,还可以实现头部悬浮吸顶功能等。

License: Apache License 2.0

Java 100.00%
recyclerview recyclerview-adapter sticky group-list-items android android-library

groupedrecyclerviewadapter's Introduction

欢迎来访我的主页

访问量统计

个人简介



Android Kotlin Vue HTML5 Flutter

  • 📍 广州(Guangzhou)
  • 👩‍💻 8 years of work.
  • wx : liangrenyan5201314
  • 📧 [email protected]

About My Github


groupedrecyclerviewadapter's People

Contributors

donkingliang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

groupedrecyclerviewadapter's Issues

组头无法删除

                //取到当前是哪一个组
                int mCurrentGroups = adapter.getGroupPositionForPosition(position);
                //取到当前在组中位置
                int positionInGroup = adapter.getChildPositionForPosition(mCurrentGroups, position);
                //执行删除某组中某个具体数据
                dtoList.get(mCurrentGroups).getDatas().remove(positionInGroup);
                //通知更新
                adapter.notifyChildRemoved(mCurrentGroups, positionInGroup);
                //商品数据全被移除时
                ToastUtils.showShort("商品已删除" + "还剩下" +dtoList.get(mCurrentGroups).getDatas().size());
                //仅剩组头
                if (dtoList.get(mCurrentGroups).getDatas().size() == 0) {
                    adapter.notifyHeaderRemoved(mCurrentGroups);
                }

仅剩组头的时候,无法删除,而是整个布局刷新了,但组头一直还在

移动到指定头布局位置

有没有哪个方法 可以直接显示到指定的头布局位置。 比方说 我直接选择 让第4组显示在最上面

大神,可不可以抽空支持一下瀑布流和网格布局的混排

需求场景是这样的:像电商首页,布局都比较复杂,涉及到商品品类的分组(一般都是网格布局,您现在的版本已经完全满足这种场景了,在此感谢您的贡献),品类下面往往会有一些推荐的商品,这些都是瀑布流布局,item高度不等。如果能再扩展一下那就完美了!

notifyChildRemoved删除子类相关问题,已自己处理过数据源

当列表只剩最后一条数据时,调用notifyChildRemoved无法remove掉父类。
那我就加了一条判断,当列表子类删除时判断list.size()==0。如果等于0时删除父类的数据源,并调用notifyGroupRemoved。但是没有效果,列表没有刷新。
后来我查看源码,是ArrayList mStructures没有刷新,里面还是旧的数据导致的。
那我修改源码将structureChanged设置为public,在删除父类数据源时重置组结构列表,现在删除正常了。
但是又出现新问题,当整个列表只剩一条头一条子数据时。对数据源删除子数据再删除父数据,调用structureChanged,再调用notifyGroupRemoved刷新列表。此时列表没有刷新,打断点查看,问题出在当最后一条数据删除时,会触发getGroupCount()。此时数据源已被清空,这个count返回0.那下面的bindViewHolder就不会走。列表页不会去刷新。

下面是代码:
image
professionList是父类List

吸顶列表刷新数据后第一组组头刷新会有问题(仅第一组表头)

吸顶列表StickyHeaderLayout包裹RecyclerView
时间排序第一组组头 2020-05-23
从时间排序切换到字母排序后
列表第一组组头显示A正确,这时上滑列表把第一组组头划出屏幕外再向下划回来
第一组组头由正确的A变回了原来的2020-05-23
其他组头和child都无异常,只是第一组吸顶组头BUG
版本2.3.0 切换后数据正常 已调用notifyDataChanged()
希望大神有空排查下这个问题

重写onBindViewHolder带payloads

因为不想每次都刷新所有的控件,所以想重写下onBindViewHolder 带payloads的,看了下源码,貌似没有对这方面对操作呀,希望能有这方面封装支持就更完美了,定位控件id的时候会报空指针,如下所示:
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) {
...
if (type == getChildViewType(position, item)) {
final ChildEntity entity = mGroups.get(position).getChildren().get(item);
AppCompatCheckBox checkBox = ((BaseViewHolder) holder).get(R.id.select);
checkBox.setEnabled(entity.isCheck());
}
}
是要先确定BaseViewHolder的type类型么?

横向滑动吸顶有问题

横向滑动时,吸顶不是被下一级头布局顶出,而是一出现下一级头布局,上一级就划出界面

changeGroup刷新问题

changeGroup的方法刷新一组数据是不是有问题。对于收缩状态->展开,countGroupItem计算值有误,getChildrenCount获取的收缩的值是0的,那最终通过notifyItemRangeChanged来刷新的item的数量是不正确的。

数据一次性全都加在到了view上问题

我在使用的过程中发现数据都是一次性直接加载完的,并不是根据滑动的时候进行加载的,这样首次初始化数据的时候很慢啊,这里您用viewHolder复用怎么复用的呢?

有个问题想请教一下

您好,我现在的需求是这样的 图片传不上去 gridview item如果是奇数个 最后一个item跨行显示 但是gridlayout只能跨列显示 不知道该怎么搞 想问一下该怎么弄

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.