web-dev-qa-db-ja.com

Recyclerさまざまなアイテムのさまざまなアイテムの装飾を表示

アプリケーションでRecyclerViewを使用していますが、デザインのニーズに応じて、リスト内のアイテム間に異なるマージンを設定する必要があります(たとえば、最初の2つのアイテム間のスペースは16dp、スペース2番目と3番目のアイテムの間32dpなど)。 RecyclerViewにアイテムの装飾を追加して、アイテム間にそのスペースを作成できることを読みました。しかし、これはすべてのアイテムの間に同じマージンを追加し、アイテムごとに異なる動作が必要です。私の質問は、これはアイテムの装飾を使用して行うことができますか?そして、このアプローチは、たとえばRecyclerView.AdapteronBindViewHolderメソッドでアイテム(ビュー)のマージンを変更するよりも優れています。前もって感謝します!

22
Sandra

RecyclerView.ItemDecoration#getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) をオーバーライドできます。これは、表示されているすべての子に対して呼び出されますView view、以下を呼び出すことにより、アダプター内での位置を取得できます。

parent.getChildAdapterPosition(view)

または、ビューホルダーに電話してください。

parent.getChildViewHolder(view)
39
pskink