投稿

12月, 2017の投稿を表示しています

[Qiita] RecyclerViewにリストカードを表示するViewを作る

イメージ
※この記事は以前Qiitaに投稿されていた古い記事です
はじめに Google Nowには、次のようにリストを表示するカードがあります。

このようなカードを作ろうと思ったときに、ViewGroupにaddViewしたり、ListViewをスクロールさせなくしてカードにしてみたりとやり方はいくつかあると思うのですが、これをもっと簡単に作れたらいいのになぁと思い、カスタムビューを作ってみましたので簡単に紹介したいと思います。
実現したいこと 今回作るカスタムビューで実現したいのは次のとおりです。
リストアイテムのViewを生成・保持リストアイテムの追加・変更・削除リストアイテムの表示数を制限リストアイテムの表示数を制限している場合、削除したら次の項目を表示するカードのヘッダー、フッター Viewの構成 今回作るカスタムビューは、次のような構成にします。

まず、カードを作るのでCardViewで囲み、その上にRelativeLayoutを乗せます。
その上に乗っている上下にあるViewはヘッダーとフッターになる予定のものです。
ヘッダーとフッターはViewにしておくことで後で差し替えられるようにし、デフォルトではTextViewを表示します。
そしてメインとなるリストはLinearLayoutを利用します。
基礎となるViewを作る 先ほどのViewの構成どおりに、まずは基礎となるViewを作っていきます。
class ListCardView : CardView {privateval defaultPadding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,16f, resources.displayMetrics).toInt()privatevar rootView: RelativeLayout =RelativeLayout(context).apply{ layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)}var headerView: View?=TextView(context).apply{ …