275  Naik [Off]
(2.10.2016 / 13:53)
aNNiMON, да, надо бы. Наверное попозже, т.к. пока что там часто что-то меняется. Да и нужно по одной фиче описывать, а то слишком сумбурно получается ка-то
1  aNNiMON (SV!) [Off]
 let live
(2.10.2016 / 13:00)
Давай на форуме тему создавай с описанием. Вижу, что либа немаленькая, в один комментарий к статье не уместить. Там и распишешь достоинства и примеры.
275  Naik [Off]
(2.10.2016 / 12:42)
Штука описанная в статье и еще кое-что реализовано в либе-фреймворке https://goo.gl/WZbXo6
Например нам нужен список команд, и по клику что-то сделать. Теперь есть возможность не создавать на каждую модель свой делегат, а использовать SimpleDelegate либо SimpleBindableDelegate (если Вы используете data-binding).
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3.     super.onCreate(savedInstanceState);
  4.     setContentView(R.layout.activity_team_select);
  5.     RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
  6.     createListConfig().applyConfig(recyclerView);
  7. }
  8.  
  9. private ListConfig createListConfig() {
  10.     ActionClickListener actionHandler = createActionHandler();
  11.  
  12.     DelegatesAdapter<Model> adapter = new DelegatesAdapter<Model>(listOfAnyObjects,
  13.             new SimpleDelegate(this, actionHandler, Team.class, R.layout.item_team));
  14.  
  15.     return new ListConfig.Builder(adapter).build(this);
  16. }
  17.  
  18. private ActionClickListener createActionHandler() {
  19.     return new ActionHandler.Builder()
  20.             .addAction(ActionType.OPEN, new OpenTeamAction())
  21.             .build();
  22. }

Если используете data-binding, то можно повесить ListConfig прямо в xml `app:listConfig="@{listConfig}"`
Чтобы забиндить данные без data-binding в Team.java нужно использовать аннотации
  1. public class Team implements BaseModel {
  2.  
  3.     @Text(R.id.team_name)
  4.     private String name;
  5.  
  6.     @DrawableId(R.id.team_avatar)
  7.     private int avatar;
  8.  
  9.     private long id;
  10.  
  11.     public Team(long id, String name, int avatar) {
  12.         this.id = id;
  13.         this.name = name;
  14.         this.avatar = avatar;
  15.     }
  16. }

Action представляет из себя такое
  1. public class OpenTeamAction extends BaseAction<Team> {
  2.  
  3.     @Override
  4.     public boolean isModelAccepted(Object model) {
  5.         return model instanceof Team;
  6.     }
  7.  
  8.     @Override
  9.     public void onFireAction(Context context, @Nullable View view, @Nullable String actionType, @Nullable Team model) {
  10.         // Что-то делаем здесь
  11.     }
  12. }

Можно создать CompositeAction и все действия покажутся в диалоге либо PopupMenu. Есть еще IntentAction для удобного запуска сервиса или Activity

Actions работают теперь и без data-binding.
Достаточно задать в разметке на view по которому хотим ловить клики
  1. app:actionType="OPEN"

Поддерживается также `actionTypeLongClick`

Пример проекта без использования data-binding https://goo.gl/4AS3Df
Но с биндингом все же удобнее :gg:
Изм. Naik (2.10 / 12:49) (5)
275  Naik [Off]
(5.09.2016 / 09:34)
https://habrahabr.ru/post/308872/
275  Naik [Off]
(8.07.2016 / 07:14)
vl@volk, проще показать все это в деле, чем писать, там ничего сложного нету. Достаточно для отображения списка набросать любых объектов в List, набросать в DelegatesManager делегатов для отображения этих объектов, передать в Adapter, установить его в RecyclerView.

Еще дополнительно был написан BindingAdater, и теперь достаточно создать через builder объект ListConfig, ему передать адаптер, опционально можно задать LayoutManager, отступы и т.д., передать его в xml, и в xml написать

<RecyclerView
      ....
      app:listConfig="@{listConfig}"/>
3789  vl@volk [Off]
 знает толк
(7.07.2016 / 23:01)
Сложно, очень сложно, очень очень сложно. Почему так много кода и длинных слов? их очень тяжело парсить на ходу. Но в целом после часа разбирания с кодом становится всё ясно и просто.
1  aNNiMON (SV!) [Off]
 let live
(13.03.2016 / 22:02)
Naik, попробуй было/стало в [pr] оформить, для наглядности.
275  Naik [Off]
(13.03.2016 / 21:33)
Дополнил статью (DataBinding)
275  Naik [Off]
(9.03.2016 / 19:56)
Koenig, все претензии к опере :gg:
1314  Koenig (FMod) [Off]
 Магистр Мёда
(9.03.2016 / 08:08)
с телефона, опера старая классика. при скроле изображение пропадает, когда останавливается показывает
Всего: 17
1 2 >>
К записи
Android
Категории

Мы в соцсетях

tw tg yt gt