[Qiita] RecyclerViewにリストカードを表示するViewを作る
![イメージ](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoelNd1Xmvj5mHP73GwLynzID2PqgAnG2LHORpn7rMNGryvrr8DUiVbjz-_TmuX-bIosMbAXnuzh7dmTHG6cz5Kmwf3dW5G_GEQErvIoiSSrb74YtbPYocn3cxyjsLqj2ngJdPtUjo1yg/s1600/971f01e2-1189-7c46-1aee-f7468a5a4699.png)
※この記事は以前Qiitaに投稿されていた古い記事です はじめに Google Nowには、次のようにリストを表示するカードがあります。 このようなカードを作ろうと思ったときに、ViewGroupにaddViewしたり、ListViewをスクロールさせなくしてカードにしてみたりとやり方はいくつかあると思うのですが、これをもっと簡単に作れたらいいのになぁと思い、カスタムビューを作ってみましたので簡単に紹介したいと思います。 実現したいこと 今回作るカスタムビューで実現したいのは次のとおりです。 リストアイテムのViewを生成・保持 リストアイテムの追加・変更・削除 リストアイテムの表示数を制限 リストアイテムの表示数を制限している場合、削除したら次の項目を表示する カードのヘッダー、フッター Viewの構成 今回作るカスタムビューは、次のような構成にします。 まず、カードを作るのでCardViewで囲み、その上にRelativeLayoutを乗せます。 その上に乗っている上下にあるViewはヘッダーとフッターになる予定のものです。 ヘッダーとフッターはViewにしておくことで後で差し替えられるようにし、デフォルトではTextViewを表示します。 そしてメインとなるリストはLinearLayoutを利用します。 基礎となるViewを作る 先ほどのViewの構成どおりに、まずは基礎となるViewを作っていきます。 class ListCardView : CardView { private val defaultPadding = TypedValue . applyDimension ( TypedValue . COMPLEX_UNIT_DIP , 16f , resources . displayMetrics ) . toInt ( ) private var rootView : RelativeLayout = RelativeLayout ( context ) . apply { layoutParams = ViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH_PA