All Projects → lopspower → Hfrecyclerview

lopspower / Hfrecyclerview

Licence: apache-2.0
Add Header and/or Footer in your RecyclerView in the simplest way possible.

Programming Languages

java
68154 projects - #9 most used programming language
kotlin
9241 projects

Projects that are alternatives of or similar to Hfrecyclerview

Xrefreshlayout
【已过时,不再更新,请使用更强大的SmartRefreshLayout!】A refresh layout(无侵入下拉刷新和加载布局), can refresh RecyclerView for all LayoutManager, NestedScrollView。
Stars: ✭ 127 (-19.11%)
Mutual labels:  recyclerview
Simplerecyclerview
Android RecyclerView 简化使用: 下拉刷新, 加载更多, 加载中/空数据/错误页面, 固定Header, 分割线, 点击监听, Item 动画, 分组显示 Title. (Android RecyclerView easy-to-use: Pull-To-Refresh, load more, Loading/Empty/Error View, sticky headers, divider, click listener, item animation, group display.)
Stars: ✭ 134 (-14.65%)
Mutual labels:  recyclerview
Android Rv Swipe Delete
RecyclerView swipe to delete example.
Stars: ✭ 143 (-8.92%)
Mutual labels:  recyclerview
Sectioned Recyclerview
Simple Android library that allows you to easily split your RecyclerView into expanding/collapsing sections with headers.
Stars: ✭ 129 (-17.83%)
Mutual labels:  recyclerview
Omegarecyclerview
Custom RecyclerView with additional functionality. Allow you add divider, itemSpace, emptyView, sticky header and some other features
Stars: ✭ 132 (-15.92%)
Mutual labels:  recyclerview
Swipeablecards
Stars: ✭ 136 (-13.38%)
Mutual labels:  recyclerview
Recyclerbanner
用RecyclerView实现无限轮播图,有普通版和3d版
Stars: ✭ 1,600 (+919.11%)
Mutual labels:  recyclerview
Customtvrecyclerview
Stars: ✭ 154 (-1.91%)
Mutual labels:  recyclerview
Coinverse
Coinverse Open App is the first audiocast app for cryptocurrency news. 🚀
Stars: ✭ 133 (-15.29%)
Mutual labels:  recyclerview
Recyclerviewadapter
A RecyclerView Adapter that support load more and add headerview
Stars: ✭ 141 (-10.19%)
Mutual labels:  recyclerview
Sectionedrecyclerviewadapter
An Adapter that allows a RecyclerView to be split into Sections with headers and/or footers. Each Section can have its state controlled individually.
Stars: ✭ 1,659 (+956.69%)
Mutual labels:  recyclerview
Kotlin Adapter
🔥 RecyclerView,AbsListView适配器, 支持多种视图样式, 支持吸顶、侧滑删除、拖拽效果
Stars: ✭ 132 (-15.92%)
Mutual labels:  recyclerview
Cardstackview
📱Tinder like swipeable card view for Android
Stars: ✭ 1,850 (+1078.34%)
Mutual labels:  recyclerview
Fullrecyclerview
This is a compilation of different kinds and actions in recyclerView
Stars: ✭ 127 (-19.11%)
Mutual labels:  recyclerview
Drag Select Recyclerview
👇 Easy Google Photos style multi-selection for RecyclerViews, powered by Kotlin and AndroidX.
Stars: ✭ 1,818 (+1057.96%)
Mutual labels:  recyclerview
Recyclerview Animators
An Android Animation library which easily add itemanimator to RecyclerView items.
Stars: ✭ 10,916 (+6852.87%)
Mutual labels:  recyclerview
Tableview
A RecyclerView that looks like a TableView, can scroll horizontally and vertically with a fixed header at the same time.
Stars: ✭ 135 (-14.01%)
Mutual labels:  recyclerview
Inboxrecyclerview
Build expandable descendant navigation, inspired by Google Inbox
Stars: ✭ 1,953 (+1143.95%)
Mutual labels:  recyclerview
Android List To Grid
Implementation of List to Grid: Icon Transition
Stars: ✭ 147 (-6.37%)
Mutual labels:  recyclerview
Expandablerecyclerview
ExpandableRecyclerView with smoothly animation.
Stars: ✭ 135 (-14.01%)
Mutual labels:  recyclerview

HFRecyclerView

sample

Android Arsenal Platform API Twitter

This is an Android library allowing to add Header and/or Footer in your RecyclerView in the simplest way possible.

Android app on Google Play

USAGE

To add Header and/or Footer in your RecyclerView you need to add HFRecyclerView library in your project or you can also grab it from Gradle:

implementation 'com.mikhaellopez:hfrecyclerview:1.1.1'

or KOTLIN version

implementation 'com.mikhaellopez:hfrecyclerview-kotlin:1.1.1'

KOTLIN

  1. You need to create a custom RecyclerView.Adapter for your RecyclerView which HFRecyclerView with the object type of your choice (in my example, my object type is MyDataObject). The first param in HFRecyclerView constructor is a flag to determine if you want to add a header, and the last to add a footer.

    class ExampleAdapter : HFRecyclerView<MyDataObject>(true, true) {
        //...
    }
    
  2. After that, override 3 methods and create 3 class which extend RecyclerView.ViewHolder in order to add the viewHolder for your Item, your Header and your Footer:

    class ExampleAdapter : HFRecyclerView<MyDataObject>(true, true) {
        
        //...
        
        //region Override Get ViewHolder
        override fun getItemView(inflater: LayoutInflater, parent: ViewGroup): RecyclerView.ViewHolder =
                ViewHolder.ItemViewHolder(inflater.inflate(R.layout.item_example, parent, false))
    
        override fun getHeaderView(inflater: LayoutInflater, parent: ViewGroup): RecyclerView.ViewHolder =
                ViewHolder.HeaderViewHolder(inflater.inflate(R.layout.item_header, parent, false))
    
        override fun getFooterView(inflater: LayoutInflater, parent: ViewGroup): RecyclerView.ViewHolder =
                ViewHolder.FooterViewHolder(inflater.inflate(R.layout.item_footer, parent, false))
        //endregion
        
        //region ViewHolder Header and Footer
        sealed class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
    
            class ItemViewHolder(view: View) : ViewHolder(view) {
                fun bind(item: String) {
                    itemView.run { text.text = item }
                }
            }
    
            class HeaderViewHolder(view: View) : ViewHolder(view)
    
            class FooterViewHolder(view: View) : ViewHolder(view)
        }
        //endregion
    }
    

    ℹ️ If you doesn't have a footer (same for header) you need to override getFooterView like this:

    override fun getFooterView(inflater: LayoutInflater, parent: ViewGroup): RecyclerView.ViewHolder? = null
    
  3. You must override onBindViewHolder method to manage your views as you like:

    class ExampleAdapter : HFRecyclerView<MyDataObject>(true, true) {
    
        //...
    
        override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
            when (holder) {
                is ViewHolder.ItemViewHolder -> holder.bind(getItem(position))
                is ViewHolder.HeaderViewHolder -> { }
                is ViewHolder.FooterViewHolder -> { }
            }
        }
        
        //...
    }
    
  4. Finally, you can used your adapter and set yout data like this:

    val adapter = ExampleAdapter()
    adapter.data = youtDataList
    recyclerview.adapter = adapter
    

ℹ️ You can see a full example here : ExampleAdapter and MainActivity

JAVA

  1. You need to create a custom RecyclerView.Adapter for your RecyclerView which extends HFRecyclerView with the object type of your choice (in my example, my object type is MyDataObject) :

    public class ExampleAdapter extends HFRecyclerView<MyDataObject> {
        //...
    }
    
  2. In your custom adapter, add a constructor. The first param in super constructor is a flag to determine if you want to add a header, and the second is a flag to add a footer. You can also used an other super constructor with your data list in first param.

    public class ExampleAdapter extends HFRecyclerView<MyDataObject> {
    
        public ExampleAdapter() {
            // With Header & With Footer
            super(true, true);
        }
    
        //...
    }
    
  3. After that, override 3 methods and create 3 class which extend RecyclerView.ViewHolder in order to add the viewHolder for your Item, your Header and your Footer:

    public class ExampleAdapter extends HFRecyclerView<MyDataObject> {
        
        //...
        
        //region Override Get ViewHolder
        @NotNull
        @Override
        protected RecyclerView.ViewHolder getItemView(@NotNull LayoutInflater inflater, @NotNull ViewGroup parent) {
            return new ItemViewHolder(inflater.inflate(R.layout.item_example, parent, false));
        }
    
        @Override
        protected RecyclerView.ViewHolder getHeaderView(@NotNull LayoutInflater inflater, @NotNull ViewGroup parent) {
            return new HeaderViewHolder(inflater.inflate(R.layout.item_header, parent, false));
        }
    
        @Override
        protected RecyclerView.ViewHolder getFooterView(@NotNull LayoutInflater inflater, @NotNull ViewGroup parent) {
            return new FooterViewHolder(inflater.inflate(R.layout.item_footer, parent, false));
        }
        //endregion
        
        //region ViewHolder Header and Footer
        class ItemViewHolder extends RecyclerView.ViewHolder {
            TextView text;
    
            ItemViewHolder(View itemView) {
                super(itemView);
                text = (TextView)itemView.findViewById(R.id.text);
            }
            
            void bind(MyDataObject item) {
                text.setText(item.value());
            }
        }
    
        class HeaderViewHolder extends RecyclerView.ViewHolder {
            HeaderViewHolder(View itemView) {
                super(itemView);
            }
        }
    
        class FooterViewHolder extends RecyclerView.ViewHolder {
            FooterViewHolder(View itemView) {
                super(itemView);
            }
        }
        //endregion
    }
    
  4. You must override onBindViewHolder method to manage your views as you like:

    public class ExampleAdapter extends HFRecyclerView<MyDataObject> {
    
        //...
    
        @Override
        public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
            if (holder instanceof ItemViewHolder) {
                ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
                itemViewHolder.bind(getItem(position));
            } else if (holder instanceof HeaderViewHolder) {
    
            } else if (holder instanceof FooterViewHolder) {
    
            }
        }
        
        //...
    }
    
  5. Finally, you can used your adapter and set yout data like this:

    ExampleAdapter adapter = new ExampleAdapter();
    adapter.setData(youtDataList);
    recyclerView.setAdapter(adapter);
    

ℹ️ You can see a full example here : ExampleAdapter and MainActivity

LICENCE

CircularImageView by Lopez Mikhael is licensed under a Apache License 2.0. Based on a work at @hister.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].