FastAdapter также предлагает возможность определить нормальный класс Model
, который может быть очень простым POJO и классом Item
.
Таким образом, вы можете иметь все свои определения данных в модели, для которых не требуются родительские классы или реализации, и Item
, который будет выполнять привязку пользовательского интерфейса.
Простой пример можно найти в примере приложения FastAdapter
.
Вместо ItemAdapter
вы будете использовать ModelAdapter
, а затем предоставите логику того, как ваша модель преобразуется в Item
.
Это может быть просто:
ModelAdapter<IconModel, ModelIconItem> itemAdapter = new ModelAdapter<>(new IInterceptor<IconModel, ModelIconItem>() {
@Override
public ModelIconItem intercept(IconModel iconModel) {
return new ModelIconItem(iconModel);
}
});
Для этого простого примера модель выглядит так:
public class IconModel {
public IIcon icon;
public IconModel(IIcon icon) {
this.icon = icon;
}
}
И товар выглядит так:
public class ModelIconItem extends ModelAbstractItem<com.mikepenz.fastadapter.app.model.IconModel, ModelIconItem, ModelIconItem.ViewHolder> {
public ModelIconItem(com.mikepenz.fastadapter.app.model.IconModel icon) {
super(icon);
}
@Override
public int getType() {
return R.id.fastadapter_model_icon_item_id;
}
@Override
public int getLayoutRes() {
return R.layout.icon_item;
}
@Override
public void bindView(ViewHolder viewHolder, List<Object> payloads) {
super.bindView(viewHolder, payloads);
... bind logic
}
@Override
public ViewHolder getViewHolder(View v) {
return new ViewHolder(v);
}
protected static class ViewHolder extends RecyclerView.ViewHolder {
protected View view;
@BindView(R.id.name)
public TextView name;
@BindView(R.id.icon)
public IconicsImageView image;
public ViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
this.view = view;
}
}
}
Полный пример кода можно найти здесь:
https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/ModelItemActivity.java#L51