SimpleRecycler

Introduction: Простой в использовании адаптер, для быстрой разработки приложений.
More: Author   ReportBugs   
Tags:

Release

Use it to comfortable work with lists.

SimpleRecycler includes HandyHolder library for comfortable creating and updating holders.

Out of the box:

  • Asynchronous layout inflation
  • Ripple-effect to items
  • OnClickListener and handy OnViewsClickListener
  • Headers and Footers like in the ListView
  • Custom Insertions between items
  • Paging with inner logic to load more data
  • Implemented List interface (use adapter as list)

Usage

Add items

//add header
mAdapter.addHeader(R.layout.layout_header);

//add footer
mAdapter.addFooter(R.layout.layout_footer);

//add insertion after headers and before footers
mAdapter.addInsertion(new Insertion(R.layout.layout_insertion, anyData));

//add item after headers and before footers
mAdapter.add(item);

Set click listeners

mAdapter.setOnItemClickListener(new OnItemClickListener<String>() {
    @Override
    public void onClick(String item, int position) {
        // do something
    }
});

mAdapter.setOnItemViewsClickListener(new int[]{R.id.vName, R.id.vClickableImage},
    new OnItemViewsClickListener<String>() {
        @Override
        public void onClick(@IdRes int childViewId, String item, int position) {
            switch (childViewId) {
                case R.id.vName:
                    // on vName click!
                    break;
                case R.id.vClickableImage:
                    // on vClickableImage click!
                    break;
            }
        }
});

Implement adapter

public class MyAdapter extends StrongSimpleAdapter<MyHolder, String> {

    public MyAdapter(@NonNull Context context, @NonNull List<String> items) {
        super(context, items, R.layout.item);
    }

    @Override
    protected void onBindItemViewHolder(MyHolder holder, int position) {
        super.onBindItemViewHolder(holder, position);

        String item = get(position);

        //... 
    }

    @Override
    protected MyHolder<String> newViewHolder(View v, int viewType) {
        return new MyHolder(v);
    }

    static class MyHolder extends ViewHolder {
        //...
    }
}

Asynchronous layout inflation

mAdapter.setAsyncInflating(true);

Disable ripple effect

mAdapter.setRippleEffect(false);

Customize ripple effect color

<color name="simplePressedColor">color</color>

or

mAdapter.setRippleColor(color)

Several view holders

public class MyAdapter extends SimpleAdapter<MODEL> {

    @Override
    protected ItemViewHolder<MODEL> newViewHolder(View v, int viewType) {
        switch (viewType) {
            case TYPE_FIRST:
                return new FirstHolder(v);
            case TYPE_SECOND:
                return new SecondHolder(v);
            case TYPE_THIRD:
                return new ThirdHolder(v);
        }

        return null;//no way
    }

    @Override
    public int getItemViewType(int position) {
        if (isInsertion(position)) return TYPE_INSERTION;

        if (condition1) return TYPE_FIRST;
        if (condition2) return TYPE_SECOND;
        if (condition3) return TYPE_THIRD;
    }
}

Download

Step 1. Add it in your root build.gradle at the end of repositories:

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

Step 2. Add the dependency

    dependencies {
        compile("com.github.e16din:SimpleRecycler:0.7.5@aar") {
            transitive = true
        }
    }

License MIT

Copyright (c) 2016 Александр Кундрюков (e16din)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools