【开源】sticky-headers-recyclerview

sticky-headers-recyclerview

 

介绍:

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

运行效果:

 

 

使用说明:

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

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

 

 

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中使用它的例子:

 

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

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

 

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);

  

posted on 2015-03-23 16:15  wasdchenhao  阅读(750)  评论(0)    收藏  举报

导航