Skip to content
/ Axe Public

Небольшое решение для обмена данными между View и конкретной сущностью в Android.

License

Notifications You must be signed in to change notification settings

Chezclif/Axe

Repository files navigation

Axe

Небольшое решение для обмена данными между View и конкретной сущностью в Android.

Установка

build.gradle project

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
    ...
        maven { url 'https://dl.bintray.com/chezclif/PoleAxe' }
    }
}

build.gradle app

dependencies {
    ...
    compile 'com.github.chezclif:Axe:0.0.5'
}

Использование

Создаем класс, помечаем нужные поля аннотациями, указывая уникальные текстовые ключи:

public class StartCollector {
    @ModelField("firstString")
    private String firstString;
    @ModelField("secondString")
    private String secondString;

В activty/fragment, нужные нам view так же помечаются ключами:

    @BindModel("firstString")
    TextInputLayout textInputOne;
    @BindModel("secondString")
    TextInputLayout textInputTwo;

Настраиваем библиотеку для работы:

PoleAxe<StartCollector> poleAxe=new PoleAxe<>(this, StartCollector.class);

Взаимодействие может происходить только, если указаны правильные ключи для view и полей сущности.

Собрать всю информацию с объектов view с последующим созданием или обновлением сущности:

StartCollector startCollector = poleAxe.updateModel();
...
startCollector = poleAxe.updateModel(startCollector)

Информацию с полей сущности переносим на объекты view

 poleAxe.bindView(startCollector);

Дополнительно

Можно настраивать поведение Axe для классов или отдельных view обьектов:

    @BindModel("isCheck")
    Switch switchTest;
    ...
            poleAxe.addSpecialRule(switchTest
            , new ViewRule<Switch, Boolean, Boolean>() {
            @Override
            public Boolean getData(Switch view) {
                return view.isChecked();
            }

            @Override
            public void setData(Switch view, Boolean aBoolean) {
                view.setChecked(aBoolean);
            }
        });
        poleAxe.addCustomRule(TextInputLayout.class
        , new ViewRule<TextInputLayout, String, String>() {
            @Override
            public String getData(TextInputLayout view) {
                return view.getEditText().getText().toString();
            }

            @Override
            public void setData(TextInputLayout view, String s) {
                view.getEditText().setText(s);
            }
        });
        

License

MIT

About

Небольшое решение для обмена данными между View и конкретной сущностью в Android.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages