/ExpandableAdapter

Customizable adapter for RecyclerView

Primary LanguageJava

ExpandableAdapter

Customizable adapter for RecyclerView

Download API Android Arsenal

Setup

Gradle

compile 'com.github.emerap:expandable-adapter:0.0.4'

Maven

<dependency>
  <groupId>com.github.emerap</groupId>
  <artifactId>expandable-adapter</artifactId>
  <version>0.0.4</version>
  <type>pom</type>
</dependency>

Ivy

<dependency org='com.github.emerap' name='expandable-adapter' rev='0.0.4'>
  <artifact name='expandable-adapter' ext='pom' ></artifact>
</dependency>

Features

  • Interface StateConfig for saving and restore items state.
  • Get and set any object to Section and Item from via them interfaces.
  • Create Model view from list of object (any types).
  • Interface ModelSwitch for switch between ModelView objects.
  • Predefined SectionViewHolder with title, icon and count fields.
  • Empty data placeholder (override onBindEmptyDataPlaceholder and getEmptyDataViewHolder)
  • Predefined EmptyDataViewHolder with message and image fields.

Examples

Customize adapter

  • Implement onCreateViewHolder.
  • Bind your data to UI.
import com.emerap.library.ExpandableAdapter.ExpandableAdapter;
import com.emerap.library.ExpandableAdapter.ExpandableViewHolder;
import com.emerap.library.ExpandableAdapter.ItemInterface;
import com.emerap.library.ExpandableAdapter.SectionInterface;

public class CustomAdapter extends ExpandableAdapter {

    @Override
    public void onBindSection(ExpandableViewHolder holder, SectionInterface section) {

    }

    @Override
    public void onBindItem(ExpandableViewHolder holder, String title, ItemInterface item) {

    }
    
    @Override
    public ExpandableViewHolder getSectionViewHolder(ViewGroup parent) {
        return DefaultSectionViewHolder.newInstance(parent);
    }

    @Override
    public ExpandableViewHolder getItemViewHolder(ViewGroup parent) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.expandeable_recycler_item, parent, false);
        return new ItemViewHolder(view);
    }
}

See MainActivity.java from app module