移花接木2-分组ListView

效果图

如图SectionListView.gif,为了方便下面讲解实现原理,所以进行了着色。


SectionListView.gif

实现原理

1.代码请点击我
2.实现原理同我的上一篇随笔移花接木1-仿百度外卖悬浮选项中的第一种实现方法,可以看完上篇随笔再来看本篇随笔。这里同样是两层布局,不过逻辑更复杂一些。效果图中着蓝色的就是悬浮的布局。

核心代码:ListView的OnScrollListener中的onScroll方法

前提

通过效果图,可以知道这个ListView有两种布局:分组(section)布局和普通布局。这里通过ListView多类型实现,而不是显示隐藏布局。为了下面讲解方便,我们将悬浮布局及着蓝色的布局叫做sectionView。

三种情况:

情况1,如下图。此时也就是ListView的header可见的情况下,sectionView不可见;


情况1.png

情况2,如下图。一个section到达顶部,此时将sectionView替换成当前section的布局,并将其完全显示出来。
(问题1:怎么将sectionView替换成当前section的布局);


情况2.png

情况3,如下图。即在sectionView没有完全隐藏的情况下,一个section遇到上一个section,两者应该是吸引关系,即一个往下,另一个也往下。(问题2:当一个section下滑拖出上一个"section"时,sectionView中的布局如何替换成上一个section的布局)
情况3.png

问题解决

1.问题1:sectionView其实是一个ViewGroup。而获取section的布局则是通过调用现成的adapter.getView方法;
2.问题2:我这里是通过从当前position向上遍历直到找到上一个section,然后通过问题1的方法刷新布局。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,079评论 25 709
  • 从今日开始,一,美容,二,瘦身,三,保持温婉
    猪腿肉阅读 1,220评论 0 0
  • 目前我的工作是法语导游,接待法语国家的游客来我国游玩。我的法语是自学的,所以想和对法语有兴趣的同学分享一下。 1....
    心的新旅行阅读 3,157评论 7 1
  • 今天的问答里,一直在强调一件事,就是,先做好自己,才能自然而然去影响别人,成为那个说的起话的人! 懂很多道理,却依...
    念起ly阅读 1,594评论 0 0

友情链接更多精彩内容