Android固定头部sticky-headers RecycleView-阿里云开发者社区

开发者社区> 开发与运维> 正文

Android固定头部sticky-headers RecycleView

简介:
一个使用LinearLayoutManager为RecyclerViews加上section headers效果的列表控件,支持横向和纵向。

运行效果:

使用说明:

主要有三个类:StickyRecyclerHeadersAdapter, StickyRecyclerHeadersDecoration, 和StickyRecyclerHeadersTouchListener.

StickyRecyclerHeadersAdapter的使用非常接近于 RecyclerView.Adapter,建议让你的 RecyclerView.Adapter实现 StickyRecyclerHeadersAdapterStickyRecyclerHeadersAdapter接口如下:

1
2
3
4
5
6
public interface StickyRecyclerHeadersAdapter<VH extends RecyclerView.ViewHolder> {
  public long getHeaderId(int position);
  public VH onCreateHeaderViewHolder(ViewGroup parent);
  public void onBindHeaderViewHolder(VH holder, int position);
  public int getItemCount();
}


StickyRecyclerHeadersDecoration是整个效果的关键,但你并不需要额外的配置,下面是在activity中使用它的例子:

1
2
3
4
5
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
mAdapter = new MyStickyRecyclerHeadersAdapter();
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
mRecyclerView.addItemDecoration(new StickyRecyclerHeadersDecoration(mAdapter));

StickyRecyclerHeadersTouchListener是section头部被点击的事件的监听者,使用如下:

1
2
3
4
5
6
7
8
9
10
11
StickyRecyclerHeadersTouchListener touchListener =
    new StickyRecyclerHeadersTouchListener(recyclerView, headersDecor);
touchListener.setOnHeaderClickListener(
    new StickyRecyclerHeadersTouchListener.OnHeaderClickListener() {
      @Override
      public void onHeaderClick(View header, int position, long headerId) {
        Toast.makeText(MainActivity.this, "Header position: " + position + ", id: " + headerId,
            Toast.LENGTH_SHORT).show();
      }
    });
mRecyclerView.addOnItemTouchListener(touchListener);

项目地址:https://github.com/timehop/sticky-headers-recyclerview

Sticky Headers decorator for Android's RecyclerView


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章