sto creando una sottoclasse di ItemDecoration
da questa sostanza: https://gist.github.com/alexfu/0f464fc3742f134ccd1eCome decorare in modo selettivo elementi RecyclerView
come farlo decorare solo oggetti con certe condizioni? Ad esempio, decorare solo gli elementi con determinate posizioni, tipo di ViewHolder, ecc
ho modificato la sostanza suddetta (più alcune modifiche obsoleto Android API) con questo codice, ma tutti gli articoli vengono decorate comunque:
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);
}
}
Cosa c'è che non va nel codice sopra? A proposito, può essere considerata la migliore pratica (in relazione alla separazione delle preoccupazioni) per posizionare quel tipo di codice nella classe ItemDecoration?
Mostraci cosa disegni nella tua classe. Da quello che abbiamo qui, stai semplicemente rimuovendo il padding per le linee indesiderate. –
@StephaneMathis ecco il mio codice modificato: https://gist.github.com/anonymous/78a87dfc595d5efa8982 – akhyar
Il metodo 'onDraw' della decorazione non ha alcun riferimento all'elemento corrente, quindi ho provato a fare il controllo' isDecorated' su ' getItemOffs'' – akhyar