All Projects → chuross → recyclerview-adapters

chuross / recyclerview-adapters

Licence: Apache-2.0 license
Multiple item adapters for RecyclerView (inspired by Merge Adapter)

Programming Languages

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

Projects that are alternatives of or similar to recyclerview-adapters

Recyclerview
How to use a recyclerview
Stars: ✭ 121 (+404.17%)
Mutual labels:  recyclerview, recyclerview-adapter
Fastadapter
快速使用的RecyclerView Adapter
Stars: ✭ 170 (+608.33%)
Mutual labels:  recyclerview, recyclerview-adapter
Easyadapter
Recyclerview adapter library- Create adapter in just 3 lines of code
Stars: ✭ 122 (+408.33%)
Mutual labels:  recyclerview, recyclerview-adapter
Cartlayout
🦄 使用 RecyclerView 实现店铺分组购物车。 高仿京东购物车、高仿淘宝购物车、高仿天猫购物车
Stars: ✭ 101 (+320.83%)
Mutual labels:  recyclerview, recyclerview-adapter
Flap
Flap(灵动),一个基于 RecyclerView 的页面组件化框架。
Stars: ✭ 204 (+750%)
Mutual labels:  recyclerview, recyclerview-adapter
Poweradapter
Adapter for RecyclerView(only 21KB).RecyclerView万能适配器(仅21KB)
Stars: ✭ 112 (+366.67%)
Mutual labels:  recyclerview, recyclerview-adapter
Android Rv Swipe Delete
RecyclerView swipe to delete example.
Stars: ✭ 143 (+495.83%)
Mutual labels:  recyclerview, recyclerview-adapter
Elements
⚒ Modular components for RecyclerView development enforcing clean, reusable and testable code, with built-in support for paging and complex hierarchies of data.
Stars: ✭ 75 (+212.5%)
Mutual labels:  recyclerview, recyclerview-adapter
Moretype
new method to build data in RecyclerView with Kotlin!
Stars: ✭ 189 (+687.5%)
Mutual labels:  recyclerview, recyclerview-adapter
Airbnb Android Google Map View
This is a sample Android Application which has Google Map view similar to what AirBnb Android Application. Moving Markers like Uber/Ola. Custom Google Search for places. Recycler view with Animations added.
Stars: ✭ 175 (+629.17%)
Mutual labels:  recyclerview, recyclerview-adapter
Recyclerview Examples
Samples to learn about RecyclerView
Stars: ✭ 87 (+262.5%)
Mutual labels:  recyclerview, recyclerview-adapter
Admobadapter
It wraps your Adapter to display Admob native ads and banners in a ListView/RecyclerView data set. It based on the Yahoo fetchr project https://github.com/yahoo/fetchr
Stars: ✭ 224 (+833.33%)
Mutual labels:  recyclerview, recyclerview-adapter
Expandable Recycler View
[DEPRECATED]
Stars: ✭ 1,234 (+5041.67%)
Mutual labels:  recyclerview, recyclerview-adapter
Baserecyclerviewadapter
⚡ Fast way to bind RecyclerView adapter and ViewHolder for implementing clean sections.
Stars: ✭ 120 (+400%)
Mutual labels:  recyclerview, recyclerview-adapter
Flexadapter
The easiest way to use a RecyclerView on Android
Stars: ✭ 80 (+233.33%)
Mutual labels:  recyclerview, recyclerview-adapter
Easyrecyclerview
🎞 Easy recyclerview for Android
Stars: ✭ 131 (+445.83%)
Mutual labels:  recyclerview, recyclerview-adapter
Autorecycleradapter
Automated configuration RecyclerView.Adapter for Android
Stars: ✭ 67 (+179.17%)
Mutual labels:  recyclerview, recyclerview-adapter
Groupedrecyclerviewadapter
GroupedRecyclerViewAdapter可以很方便的实现RecyclerView的分组显示,并且每个组都可以包含组头、组尾和子项;可以方便实现多种Type类型的列表,可以实现如QQ联系人的列表一样的列表展开收起功能,还可以实现头部悬浮吸顶功能等。
Stars: ✭ 1,163 (+4745.83%)
Mutual labels:  recyclerview, recyclerview-adapter
Customadapter
RV Adapter 优雅封装,抽取列表模版,可以快速的添加一个列表,使用组装的方式构建Adapter,抽象Cell 角色,负责创建ViewHolder,绑定数据和逻辑处理。Cell为一个独立的组件。
Stars: ✭ 172 (+616.67%)
Mutual labels:  recyclerview, recyclerview-adapter
Async Expandable List
Stars: ✭ 221 (+820.83%)
Mutual labels:  recyclerview, recyclerview-adapter

 Android Arsenal

RecyclerViewAdapters

Easy way to build RecyclerView.Adapter. This adapter also has multiple ItemViewType, if needed.

Download

Gradle

  1. add JitPack repository to your project root build.gradle.
repositories {
    maven { url "https://jitpack.io" }
}
  1. add the dependency
dependencies {
    compile 'com.github.chuross.recyclerview-adapters:recyclerview-adapters:1.x.x'
}

RxJava2 support

if you use RxJava2, you can use Rx support extension!

This extension provide databinding via Flowable.

dependencies {
    compile 'com.github.chuross.recyclerview-adapters:recyclerview-adapters:1.x.x'
    compile 'com.github.chuross.recyclerview-adapters:recyclerview-adapters-rx:1.x.x'
}

DataBinding support

if you use Android DataBinding, you can use binding support extension!

This extension provide databinding via ObservableList.

dependencies {
    compile 'com.github.chuross.recyclerview-adapters:recyclerview-adapters:1.x.x'
    compile 'com.github.chuross.recyclerview-adapters:recyclerview-adapters-databinding:1.x.x'
}

Usage

See sample project.

Header and footer RecyclerView

Basic sample

CompositeRecyclerAdapter compositeAdapter = new CompositeRecyclerAdapter();

// header
ViewItemAdapter header = new ViewItemAdapter(this) {
    @Override
    public int getAdapterId() {
        return R.id.header;
    }
};
header.add(new ViewItem(this, R.layout.item_header_1));
header.add(new ViewItem(this, R.layout.item_header_2));

// footer
ViewItemAdapter footer = new ViewItemAdapter(this) { ... };
footer.add(new ViewItem(this, R.layout.item_footer_1));

ItemAdapter itemAdapter = new ItemAdapter<String, SOMETHING_VIEW_HOLDER>(this) {
    // Override adapterId, onCreateViewHolder, onBindViewHolder
}
itemAdapter.add("hoge");
itemAdapter.add("fuga");
itemAdapter.add("piyo");

// Add all adapters
compositeAdapter.add(header);
compositeAdapter.add(itemAdapter);
compositeAdapter.add(footer);

RecyclerView list = //ex (RecyclerView) findViewById(this, R.id.list);

list.setLayoutManager(new LinearLayoutManager(this));
list.setAdapter(compositeAdapter);
/**
 * also can set ItemAdapter only.
 * ex) list.setAdapter(itemAdapter);
 */

Get child items

LocalAdapterItem localItem = compositeAdapter.getLocalAdapterItem(100);

localItem.getLocalAdapter();
localItem.getLocalAdapterPosition();

// ex)
itemAdapter.get(localItem.getLocalAdapterPosition());

Nesting support

CompositeRecyclerAdapter is nestable.

CompositeRecyclerAdapter compositeAdapter = new CompositeRecyclerAdapter();

// create nested adapter
CompositeRecyclerAdapter nestedAdapter = new CompositeRecyclerAdapter();
nestedAdapter.add(new ViewItem(context));
nestedAdapter.add(new ViewItem(context));

// add nested adapter
compositeAdapter.add(nestedAdapter);

Listeners

ItemAdapter itemAdapter = new ItemAdapter() { ... }

// item click
itemAdapter.setOnItemClickListener(new OnItemClickListener() {
    void onItemClicked(RecyclerView.ViewHolder holder, int position, String item) { ... }
});

// item long click
itemAdapter.setOnItemLongPressListener(new OnItemLongPressedListener() {
  void onItemLongPressed(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull T item) { ... }
});

Helpers

SpanSize Lookup support

GridLayoutManager gridLayoutManager = new GridLayoutManager(this, SPAN_SIZE);

SpanSizeLookup spanSizeLookup =  new SpanSizeLookupBuilder(compositeAdapter)
        .register(viewItem1, SPAN_SIZE)
        .register(viewItemAdapter, SPAN_SIZE)
        .register(itemAdapter2, SPAN_SIZE)
        .build();

gridLayoutManager.setSpanSizeLookup(spanSizeLookup);

// You must use CompositeRecyclerAdapter!!
recyclerView.setAdapter(compositeRecyclerAdapter);

Divider item decoration support

int dividerHeight = getResources().getDimensionPixelSize(R.dimen.divider_height);

recyclerView.addItemDecoration(new DividerItemDecorationBuilder(compositeAdapter)
        .dividerHeight(dividerHeight)
        .dividerColor(Color.BLACK)
        .register(itemAdapter1)
        .register(AppendButtonViewItem.class)
        .build());

Grid padding support

int padding = getResources().getDimensionPixelSize(R.dimen.padding);

recyclerView.addItemDecoration(new GridPaddingItemDecorationBuilder(compositeAdapter, padding, SPAN_SIZE)
        .paddingType(GridPaddingItemDecorationBuilder.PaddingType.BOTH)
        .register(visibleChangeButton)
        .register(itemAdapter2)
        .register(AppendButtonViewItem.class)
        .build());

Item drag support

ItemTouchHelper dragHelper = new DragItemTouchHelperBuilder(compositeAdapter)
        .dragFlag(ItemTouchHelper.UP)
        .dragFlag(ItemTouchHelper.DOWN)
        .register(ItemAdapter3.class)
        .build();
        
dragHelper.attachToRecyclerView(recyclerView);

License

Copyright 2017 chuross

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
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].