本文共 1687 字,大约阅读时间需要 5 分钟。
主要有三个类:StickyRecyclerHeadersAdapter, StickyRecyclerHeadersDecoration, 和StickyRecyclerHeadersTouchListener.
StickyRecyclerHeadersAdapter
的使用非常接近于 RecyclerView.Adapter
,建议让你的 RecyclerView.Adapter
实现 StickyRecyclerHeadersAdapter
,StickyRecyclerHeadersAdapter
接口如下:
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); |
Sticky Headers decorator for Android's RecyclerView
转载地址:http://bqjhl.baihongyu.com/