アプリケーションでRecyclerView
を使用していますが、デザインのニーズに応じて、リスト内のアイテム間に異なるマージンを設定する必要があります(たとえば、最初の2つのアイテム間のスペースは16dp、スペース2番目と3番目のアイテムの間32dpなど)。 RecyclerView
にアイテムの装飾を追加して、アイテム間にそのスペースを作成できることを読みました。しかし、これはすべてのアイテムの間に同じマージンを追加し、アイテムごとに異なる動作が必要です。私の質問は、これはアイテムの装飾を使用して行うことができますか?そして、このアプローチは、たとえばRecyclerView.Adapter
のonBindViewHolder
メソッドでアイテム(ビュー)のマージンを変更するよりも優れています。前もって感謝します!
RecyclerView.ItemDecoration#getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)
をオーバーライドできます。これは、表示されているすべての子に対して呼び出されますView view
、以下を呼び出すことにより、アダプター内での位置を取得できます。
parent.getChildAdapterPosition(view)
または、ビューホルダーに電話してください。
parent.getChildViewHolder(view)