All Projects → iammert → Expandablelayout

iammert / Expandablelayout

Expandable LinearLayout

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Expandablelayout

Materialdesigncolor
This project shows the color in material design
Stars: ✭ 55 (-95.31%)
Mutual labels:  design
Moviebookingui Android
This is a concept of fetching a user's cinema show details like venue, movie, date & showtime before allowing him to place a cinema F&B order.
Stars: ✭ 62 (-94.71%)
Mutual labels:  design
Fole
Fole is a simple library to collapse and expand a TextView.
Stars: ✭ 67 (-94.29%)
Mutual labels:  expandable
Wedding Website
Our Wedding Website 👫
Stars: ✭ 1,090 (-7.08%)
Mutual labels:  design
Sketch Better Android Export
Stars: ✭ 61 (-94.8%)
Mutual labels:  design
Fitbutton
The button which can use with icon, text, divider, custom ripple effect, border, corner radius e.t.c.
Stars: ✭ 63 (-94.63%)
Mutual labels:  design
Generative Designs
A collection of generative design React components
Stars: ✭ 51 (-95.65%)
Mutual labels:  design
Women Made It
Awesome design & development tools, books, podcasts, and blogs made by women.
Stars: ✭ 69 (-94.12%)
Mutual labels:  design
Design Pattern Samples App
🎨 Exploring creational,structural and behavioral design patterns using Kotlin
Stars: ✭ 62 (-94.71%)
Mutual labels:  design
Snacks
The Instacart Component Library
Stars: ✭ 65 (-94.46%)
Mutual labels:  design
Flutter ui challenge todo
A showcase flutter todo application.
Stars: ✭ 57 (-95.14%)
Mutual labels:  design
Fiftyshadesof
An elegant context-care loading placeholder for Android
Stars: ✭ 1,110 (-5.37%)
Mutual labels:  design
Cookiecutter Pyramid Talk Python Starter
An opinionated Cookiecutter template for creating Pyramid web applications starting way further down the development chain. This cookiecutter template will create a new Pyramid web application with email, sqlalchemy, rollbar, and way more integrated.
Stars: ✭ 64 (-94.54%)
Mutual labels:  design
Design Document
Architectural specification and design of p2🐼
Stars: ✭ 56 (-95.23%)
Mutual labels:  design
Animockup
Create animated mockups in the browser 🔥
Stars: ✭ 1,152 (-1.79%)
Mutual labels:  design
Ant Ux
🎸 A sitemap template for ux design
Stars: ✭ 1,077 (-8.18%)
Mutual labels:  design
React Bootstrap With Material Design
React Bootstrap with Material Design - Powerful and free UI KIT
Stars: ✭ 1,119 (-4.6%)
Mutual labels:  design
Touch Bar Preview
💻 Touch Bar Preview is a tiny app to display your designs on the MacBook Pro's Touch Bar.
Stars: ✭ 69 (-94.12%)
Mutual labels:  design
Ui Challenges
UI challenges by Semicolon, we accept challenges on twitter on #SemicolonChallenge
Stars: ✭ 69 (-94.12%)
Mutual labels:  design
Dctb Links
My Personal Links
Stars: ✭ 65 (-94.46%)
Mutual labels:  design

ExpandableLayout

Expandable LinearLayout

Setup

Dependency

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

dependencies {
    compile 'com.github.iammert:ExpandableLayout:1.4.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 renderer

expandableLayout.setRenderer(new ExpandableLayout.Renderer<FruitCategory, Fruit>() {
    @Override
    public void renderParent(View view, FruitCategory model, boolean isExpanded, int parentPosition) {
        ((TextView) view.findViewById(R.id.tvParent)).setText(model.name);
    }

    @Override
    public void renderChild(View view, Fruit model, int parentPosition, int childPosition) {
        ((TextView) view.findViewById(R.id.tvChild)).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<>();

//defaut is false
section.expanded = true;

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"));

Filter parent and children

//make your parent class filterable
class FruitCatefory implements Filterable{}

//make your child class filterable
class FruitCatefory implements Filterable{}

Now, you can search in parents or children. Layout will be updated automatically.

expendableLayout.filterParent("SEARCH PARAM")
//or
expendableLayout.filterChildren("SEARCH PARAM")

License

Copyright 2017 Mert Şimşek.

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].