PinnedHeaderItemDecoration

PinnedHeaderItemDecoration

一个提供吸顶效果的ItemDecoration
现在网上有很多类似这种效果的轮子,那么为什么还要重复造这个轮子呢?
因为网上的吸顶效果基本都是基于ItemDecoration绘制的,也就是说只能看没法操作,只是达到了一个视图的效果。
这样可能不满足一些特定的需求,比如吸顶的这种Type类型的View需要点击处理怎么办?
基于这种情况,开发了既不影响点击又可以自由设置吸顶Type的ItemDecoration.

PinnedHeaderItemDecoration支持LinearLayoutManager和GridLayoutManager,目前只支持不带Header以及带Header吸顶效果

ScreenGif2.gif

使用时只需要将你的Adapter实现AdapterStick接口即可,默认只需要实现这个方法isPinnedViewType()返回需要吸顶的Type
即可实现吸顶效果,所以哪种Type类型需要吸顶效果相关逻辑处理完全交给使用者去决定,这样比较灵活,并且由于完全不干涉各种Type类型
布局填充等逻辑,一切还是按照原生Adapter操作,所以可以实现点击事件等操作.如果存在多个Header情况请额外实现getHeaderCount()
方法并返回添加的HeaderView总长度.

  public class SimpleAdapter extends Adapter implements AdapterStick{
    
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return null;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

    }

    @Override
    public int getItemCount() {
        return 0;
    }
    
    //请返回实际HeadView数量
    @Override
    public int getHeaderCount() {
        return 0;
    }

    @Override
    public boolean isPinnedViewType(int viewType) {
        //DO..... 需要吸顶viewType相关逻辑
        
        return false;
    }
}

而在Activity里面这样调用即可,非常简单~

  SimpleAdapter simpleAdapter = new SimpleAdapter(this,list);
  recyclerView.addItemDecoration(new PinnedHeaderItemDecoration.Builder().adapterProvider(simpleAdapter).build());

git地址请戳:https://github.com/boboyuwu/PinnedHeaderItemDecoration

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,284评论 25 708
  • 1.0.4修复添加Header后Pinned吸顶闪动一下问题 原因:由于在代码中获取PinnedView下方的Vi...
    boboyuwu阅读 941评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,884评论 22 665
  • 昨天夜里,您悄悄的来了。 怕惊扰了我的梦。 早晨一出门,我知晓了您的善意。 您带着一颗洁白的心, 轻轻的――触地。...
    随化阅读 954评论 12 9