Я создаю подкласс ItemDecoration
из этого ItemDecoration
: https://gist.github.com/alexfu/0f464fc3742f134ccd1e
Как сделать его только украшением предметов с определенным условием? Например, только украшайте предметы определенными позициями, типом ViewHolder и т.д.
Я изменил вышеупомянутый gist (плюс некоторые изменения в устаревшем Android API) с этим кодом, но все элементы оформлены в любом случае:
public boolean isDecorated(View view, RecyclerView parent) {
RecyclerView.ViewHolder holder = parent.getChildViewHolder(view);
return holder instanceof MenuIconViewHolder || holder instanceof MenuDetailViewHolder;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (isDecorated(view, parent)) {
if (mOrientation == VERTICAL_LIST) {
outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
} else {
outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
}
} else {
super.getItemOffsets(outRect, view, parent, state);
}
}
Что не так с вышеуказанным кодом? Кстати, можно ли считать лучшей практикой (в отношении разделения проблем) поместить такой код в класс ItemDecoration?