博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android固定头部sticky-headers RecycleView
阅读量:7105 次
发布时间:2019-06-28

本文共 1687 字,大约阅读时间需要 5 分钟。

一个使用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

转载地址:http://bqjhl.baihongyu.com/

你可能感兴趣的文章
C语言求字符串长度
查看>>
Maven的setting.xml配置
查看>>
一个不应该犯的错octave
查看>>
linux经典书籍
查看>>
ubuntu 13.10 monodevelop3 安装
查看>>
【python】-- Redis简介、命令、示例
查看>>
遇到的有关iframe的滚动条问题
查看>>
vue的单向数据流
查看>>
重写了一遍授权思路
查看>>
OpenMesh 之向量操作
查看>>
Linux基础-SSH
查看>>
微信小程序视频地址
查看>>
js函数 eql,equal,equalp
查看>>
uva 10881蚂蚁(思维题)---理清关系
查看>>
vector的resize和reserve区别
查看>>
mvc.net分页查询案例——PagerExtension
查看>>
浅谈C#网络编程(一)
查看>>
[转载]Nginx 常见应用技术指南
查看>>
如何使用sqlserver 2012 空间查询(geometry及 geography)
查看>>
样式的继承:
查看>>