可扩展的线性布局 - ExpandableLayout

2017-07-31      597      Android
项目简介

ExpandableLayout

Expandable LinearLayout

Setup

Dependency

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    compile 'com.github.iammert:ExpandableLayout:1.1'
}

Layout

<iammert.com.expandablelib.ExpandableLayout
    android:id="@+id/el"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:parentLayout="@layout/layout_parent"
    app:childLayout="@layout/layout_child"/>

Set renderers

expandableLayout.setParentRenderer(new ExpandableLayout.Renderer<FruitCategory>() {
    @Override
    public void render(View view, FruitCategory model, boolean isExpanded) {
        ((TextView) view.findViewById(R.id.name)).setText(model.name);
    }
});

expandableLayout.setChildRenderer(new ExpandableLayout.Renderer<Fruit>() {
    @Override
    public void render(View view, Fruit model, boolean isExpanded) {
        ((TextView) view.findViewById(R.id.name)).setText(model.name);
    }
});

Set listeners

expandableLayout.setExpandListener(new ExpandCollapseListener.ExpandListener<FruitCategory>() {
    @Override
    public void onExpanded(int parentIndex, FruitCategory parent, View view) {
        //Layout expanded 
    }
});

expandableLayout.setCollapseListener(new ExpandCollapseListener.CollapseListener<FruitCategory>() {
    @Override
    public void onCollapsed(int parentIndex, FruitCategory parent, View view) {
        //Layout collapsed
    }
});

Add section or children

Section<FruitCategory, Fruit> section = new Section<>();

FruitCategory fruitCategory = new FruitCategory("Fruits");
Fruit fruit1 = new Fruit("Apple");
Fruit fruit2 = new Fruit("Orange");

section.parent = fruitCategory;
section.children.add(fruit1);
section.children.add(fruit2);

expandableLayout.addSection(section);
expandableLayout.addChild(fruitCategory, new Fruit("Grape"));