RecyclerStickyHeaderView, RecyclerView的置顶标题视图或者挂起视图

分享于 

6分钟阅读

GitHub

  繁體 雙語
Sticky header view or suspending view for RecyclerView.
  • 源代码名称:RecyclerStickyHeaderView
  • 源代码网址:http://www.github.com/TellH/RecyclerStickyHeaderView
  • RecyclerStickyHeaderView源代码文档
  • RecyclerStickyHeaderView源代码下载
  • Git URL:
    git://www.github.com/TellH/RecyclerStickyHeaderView.git
    Git Clone代码到本地:
    git clone http://www.github.com/TellH/RecyclerStickyHeaderView
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/TellH/RecyclerStickyHeaderView
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    RecyclerStickyHeaderView


    RecyclerView的置顶标题视图或者挂起视图。
    是一个Android库,它使得在ListView中集成头部标题变得容易。 激发它,我设置这个项目在RecyclerView中实现同样的效果。

    效果

    用法

    设置

    root build.gradle

    allprojects {
     repositories {
     jcenter()
     maven { url "https://jitpack.io" }
     }
    }

    应用 build.gradle

    dependencies {
     compile 'com.github.TellH:RecyclerStickyHeaderView:1.1.0'}

    快速启动

    • 将RecylerView放入 StickyHeaderView
     <tellh.com.stickyheaderview_rv.StickyHeaderView
     android:id="@+id/stickyHeaderView"android:layout_width="match_parent"android:layout_height="match_parent">
     <android.support.v7.widget.RecyclerView
     android:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"android:scrollbars="vertical"/>
     </tellh.com.stickyheaderview_rv.StickyHeaderView>
    • 为RecyclerView中的每个项目类型创建数据bean类。 它们应该扩展DataBean重写方法
      确定是否在顶部挂起项视图的public boolean shouldSticky()
    publicclassUserextendsDataBean {
     privateString login;
     privateint id;
     privateString avatar_url;
     privateboolean shouldSticky;
     @OverridepublicintgetItemLayoutId(StickyHeaderViewAdapteradapter) {
     returnR.layout.item_user;
     }
     publicvoidsetShouldSticky(booleanshouldSticky) {
     this.shouldSticky = shouldSticky;
     }
     // Decide whether the item view should be suspended on the top.@OverridepublicbooleanshouldSticky() {
     return shouldSticky;
     }
    }publicclassItemHeaderextendsDataBean {
     privateString prefix;
     @OverridepublicintgetItemLayoutId(StickyHeaderViewAdapteradapter) {
     returnR.layout.header;
     }
     @OverridepublicbooleanshouldSticky() {
     returntrue;
     }
    }
    • 创建ViewBinder以将不同类型视图与特定数据bean绑定。 你看到,provideViewHolder(View itemView) 对应于RecyclerView中的onCreateViewHolder,而 bindView 对应于RecyclerView中的onBindViewHolder
    publicclassItemHeaderViewBinderextendsViewBinder<ItemHeader, ItemHeaderViewBinder.ViewHolder> {
     @OverridepublicViewHolderprovideViewHolder(ViewitemView) {
     returnnewViewHolder(itemView);
     }
     @OverridepublicvoidbindView(StickyHeaderViewAdapteradapter, ViewHolderholder, intposition, ItemHeaderentity) {
     holder.tvPrefix.setText(entity.getPrefix());
     }
     @OverridepublicintgetItemLayoutId(StickyHeaderViewAdapteradapter) {
     returnR.layout.header;
     }
     staticclassViewHolderextendsViewBinder.ViewHolder {
     TextView tvPrefix;
     publicViewHolder(ViewrootView) {
     super(rootView);
     this.tvPrefix = (TextView) rootView.findViewById(R.id.tv_prefix);
     }
     }
    }
    • 为RecyclerView和 register ViewBinders实例化每个项类型的StickyHeaderViewAdapter。
     rv = (RecyclerView) findViewById(R.id.recyclerView);
     rv.setLayoutManager(newLinearLayoutManager(this));
     List<DataBean> userList =newArrayList<>();
     adapter =newStickyHeaderViewAdapter(userList)
    . RegisterItemType(newUserItemViewBinder())
    . RegisterItemType(newItemHeaderViewBinder());
     rv.setAdapter(adapter);

    就这些了。

    请查看演示和源代码以获得更多信息。 如果你有任何问题,请随时提出问题。 非常感谢!

    谢谢

    许可证

    版权所有 2016 TellH

    在Apache许可以证下许可以证版本 2.0 ("许可以证") ;你可以能不使用这里文件,除了符合许可以证。 如果适用法律或者书面许可,你可以在 http://www.apache.org/licenses/LICENSE-2.0 获得许可证,除非在许可或者任何种类的书面许可下发行,否则表示为明示或者隐含的。 查看许可协议下特定语言的许可权限和限制的许可证。


    VIEW  HEAD  Header  STI  回收  Sticky