StickyHeaderRecyclerView

RecyclerView 悬浮吸顶 Header
授权协议 Apache-2.0
开发语言 Java
所属分类 手机/移动开发、 Android UI 组件
软件类型 开源软件
地区 国产
投 递 者 仇和蔼
操作系统 Android
开源组织
适用人群 未知
 软件概览

RecyclerView 悬浮吸顶 Header,支持点击事件与状态绑定。

依赖

compile 'com.yuyang:stickyheaders:1.0.0'

用法

Header Model

Header Model 需要实现 StickyHeaderModel 接口

public class HeaderItem implements StickyHeaderModel {

    public final String title;

    /**
     * 状态保存示例,如果header存在一些交互性行为,在onBindViewHolder里面需要绑定悬浮header的状态
     */
    public int color = 0xff777777;

    public HeaderItem(String title) {
        this.title = title;
    }
}

public class Item {

    public final String title;
    public final String message;

    public Item(String title, String message) {
        this.title = title;
        this.message = message;
    }
}

Adapter

RecyclerView Adapter 需要实现 StickyHeaderProvider 接口,并在 getAdapterData() 返回 model 数据,用于判断对应 position 是否为 Header

public final class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.BaseViewHolder> implements StickyHeaderProvider {

    private final List<Object> dataList = new ArrayList<>();

    @Override
    public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == 0) {
            return new ItemViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false));
        } else {
            return new HeaderViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.header_view, parent, false));
        }
    }

    @Override
    public void onBindViewHolder(final BaseViewHolder holder, final int position) {
        
    }

    @Override
    public int getItemCount() {
        return dataList.size();
    }

    @Override
    public int getItemViewType(int position) {
        return dataList.get(position) instanceof Item ? 0 : 1;
    }

    @Override
    public List<?> getAdapterData() {
        return dataList;
    }

    private static final class ItemViewHolder extends BaseViewHolder {

        TextView titleTextView;
        TextView messageTextView;

        ItemViewHolder(View itemView) {
            super(itemView);

            titleTextView = itemView.findViewById(R.id.tv_title);
            messageTextView = itemView.findViewById(R.id.tv_message);
        }
    }

    private static final class HeaderViewHolder extends BaseViewHolder {

        TextView titleTextView;
        TextView button;

        HeaderViewHolder(View itemView) {
            super(itemView);

            titleTextView = itemView.findViewById(R.id.tv_title);
            button = itemView.findViewById(R.id.button);
        }
    }

    static class BaseViewHolder extends RecyclerView.ViewHolder {

        BaseViewHolder(View itemView) {
            super(itemView);
        }
    }
}

RecyclerView

RecyclerView recyclerView = findViewById(R.id.recycler_view);
RecyclerAdapter adapter = new RecyclerAdapter();
adapter.setDataList(genDataList(0));
// StickyLinearLayoutManager 替代 LinearLayoutManager
StickyLinearLayoutManager layoutManager = new StickyLinearLayoutManager(this, adapter);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
 相关资料
  • 本文向大家介绍Android RecyclerView实现悬浮吸顶、分隔线、到底提示效果,包括了Android RecyclerView实现悬浮吸顶、分隔线、到底提示效果的使用技巧和注意事项,需要的朋友参考一下 本文中所有效果通过ItemDecoration实现,通过此实现的可以与业务解耦,让RecyclerView的模板更加简洁,不关心任何辅助性ui,github地址 一、顶部吸附效果图 二、顶

  • Sticky 吸顶 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 基本使用 通过slot,将需要吸顶的内容放在Sticky组件中即可,slot中只能有一个根元素 注意! 由于页面依赖相关的原因的,部分页面会出现Cannot read property 'bottom' of null的报错,可以参考 issue #239 进行

  • 本文向大家介绍Android实现顶部悬浮效果,包括了Android实现顶部悬浮效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android实现顶部悬浮效果的具体代码,供大家参考,具体内容如下 效果图 布局 java  注意事项 1.清单文件需要配置 2.gradle配置需要24以上 3.recyclerView的下滑和swipRefreshLayout的下拉刷新会冲突,所以需要

  • 使用悬浮提示 java 编辑器中包含了不同类型的悬浮提示,悬浮提示提供了鼠标指针指向元素的额外信息。所有java编辑器中相关的悬浮提示可以通过 preference(首选项) 的 Hovers 页面来配置(搜索框中输入 "hover")。 java 编辑器中将鼠标指针移至类上,将显示与该类相关的java文档信息。 java 编辑器中将鼠标指针移至方法上,将显示与该方法相关的java文档信息。

  • 本文向大家介绍vue悬浮可拖拽悬浮按钮的实例代码,包括了vue悬浮可拖拽悬浮按钮的实例代码的使用技巧和注意事项,需要的朋友参考一下 前言 vue开发手机端悬浮按钮实现,可以拖拽,滚动的时候收到里边,不影响视线 github地址 使用,基于vue-cli3.0+webpack 4+vant ui + sass+ rem适配方案+axios封装,构建手机端模板脚手架 vue-h5-template 后

  • 本文向大家介绍vue+jquery+lodash实现滑动时顶部悬浮固定效果,包括了vue+jquery+lodash实现滑动时顶部悬浮固定效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue实现滑动时顶部悬浮固定效果的具体代码,供大家参考,具体内容如下 这个效果是一个项目中抽出来的一个demo效果。 前期准备: 1. 引入jQ 引入lodash.js fixTop.vue组件的

  • 悬浮元素整体使用方案。 标题 内容 类型 通用 支持布局 N/S 所需脚本 示例 顶部悬浮 <mip-fixed type="top"> 自定义内容,可以嵌套其他组件 </mip-fixed> 查看例子 编辑示例 顶部悬浮 - 向下滑动隐藏 <mip-fixed type="top" data-slide> 顶部悬浮 - 向下滑动隐藏 </mip-fixed> 查看例子 编辑示例

  • 本文向大家介绍JS实现自动固定顶部的悬浮菜单栏效果,包括了JS实现自动固定顶部的悬浮菜单栏效果的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现自动固定顶部的悬浮菜单栏效果。分享给大家供大家参考。具体如下: 这是一款自动固定顶部的悬浮菜单栏代码,不管你如何拉动滚动条,它会始终显示在网页的最顶部,用作网站的顶级导航或公告之类的比较合适吧。 运行效果截图如下: 在线演示地址如下: htt