Sto usando il RecyclerView
nella mia applicazione e per le esigenze del mio design, ho bisogno di avere margini diversi tra gli elementi nel mio elenco (ad esempio: lo spazio tra i primi due elementi da 16dp, lo spazio tra il secondo e il terzo elemento 32dp ecc.). Ho letto che puoi aggiungere elementi decorativi allo RecyclerView
e creare quello spazio tra gli elementi. Ma questa cosa aggiunge lo stesso margine tra tutti gli elementi, e voglio un comportamento diverso per oggetti diversi. Le mie domande sono, può essere fatto usando la decorazione dell'oggetto? E come è meglio questo approccio rispetto alla modifica del margine dell'articolo (vista), ad esempio il metodo onBindViewHolder
nello RecyclerView.Adapter
. Grazie in anticipo!RecyclerView item differenteDecoration per elementi diversi
18
A
risposta
33
È possibile ignorare RecyclerView.ItemDecoration#getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)
, è chiamato per ogni bambino visibile View view
, è possibile ottenere la sua posizione all'interno della scheda chiamando:
parent.getChildAdapterPosition(view)
o il titolare vista chiamando:
parent.getChildViewHolder(view)
+0
Perfetto! Grazie! – anivaler
fatto provi a sovrascrivere ItemDecoration.getItemOffsets? – pskink
sì, ma come posso aggiungere un margine diverso per articoli diversi? dovrei iterare gli oggetti in qualche modo? – Sandra
si chiama una o più volte? se quest'ultimo visualizza i parametri che vengono passati – pskink