Kotlinを使ってRecyclerViewを実装する

RecyclerViewとは

公式チュートリアルより

RecyclerView ウィジェットは、ListView をさらに進化させて柔軟にしたものです。 このウィジェットは、大きなデータセットを表示するためのコンテナであり、限られたビューを維持することで非常に効率的にスクロールできます。 ユーザーのアクションやネットワークのイベントに基づいて、実行時に要素が変わるデータ コレクションを持つ場合には、 RecyclerView ウィジェットを使用してください。

ListViewでは、ViewHolderなどを定義して、再利用されるように手動でコードを書く必要がありましたが、
RecyclerViewではそれらのコードが不要になります。

では、サンプルとして縦型のListUIを作ります。

xmlファイルにRecyclerViewを定義する

SwipeRefreshLayoutの中にRecyclerViewを定義しています。
RecyclerViewはapi level22から使用可能になるので、android support library
を使用しています。

サポートライブラリーが使用できるようapp build.gradleに追加

FragmentでRecyclerViewを定義する

RecyclerViewを有効にするためには、以下の作業が必要になります。

1.adapterをセット

RecyclerView.Adapter<T>
を継承したAdapterクラスを代入します。

2.LayoutMangerの設定

LayoutManagerクラスを設定する必要があります。
このサンプルでは、縦か横に一覧表示させるLinearLayoutMangerをセットしています。

LayoutManagerの種類

LayoutManagerには、以下の種類があります。

Adapterクラスの実装

Adapterクラスを実装します。
以下サンプルコードをあげます。

PlayListは項目を表示させるためのDataClassです。
RecyclerView.Adapterのoverrideメソッドを順にチェックしていきます。

override fun getItemCount() : Int

itemのサイズを返します。
0ならば当然表示されません。

override fun onBindViewHolder(holder : ViewHolder, position Int)

この関数で表示する項目をセットします。
ここでは、ViewHolderに定義したbindPlayListを関数を呼び、Itemの項目
をセットしています。

override fun onCreateViewHolder(parent : ViewGroup, viewType, int) : ViewHolder

関数内で、viewを生成し、ViewHolderを返します。

tap eventのinterfaceを実装する

RecyclerViewの部品がタップされた時の処理をFragmentに譲渡しています。
Kotlinにもinterfaceがあり、Fragment内でのinterfaceの定義をしています。

これで、完成しました。