【Android】ヘッダー/フッタービューつきのAndroid GridViewをオープンソースとして公開します

平野 雄一
92

この記事の概要

AndroidのGridViewに対し、ヘッダービューとフッタービューの追加をサポートしたものをオープンソースとして公開しました

We published HeaderFooterGridView by open source.
HeaderFooterGridView supports adding header rows and footer rows to GridView for Android.

HeaderFooterGridView screenshot

簡単な自己紹介

本ブログでの初めての記事になりますので、簡単な自己紹介を。
リクルートマーケティングパートナーズのiOS/Androidエンジニアの平野と申します。2014年7月にジョインし、現在は主に料理サプリのAndroidアプリに携わっています。
家電メーカーで民生向けや業務向けの機器のソフトウェア開発や、ベンチャーでiOS/AndroidアプリのほかUnity/AR/Kinect2/位置情報系のアプリ開発などをしてきました。

AndroidのGridViewにはヘッダービュー・フッタービューがない

さて、ここから本題。

AndroidのListViewには上下に固定のViewを追加することができます。
この機能はたとえば、ListViewの上部に広告を載せたいとか、下部にボタンを置きたいときなどにとても便利です。
ListViewの上部に追加するViewのことをヘッダー、下部に追加するViewのことをフッターと呼びます。

しかし、AndroidのGridViewには残念ながらヘッダーやフッダーを追加する機能がありません。
ヘッダー付きのGridViewならばオープンソースのものがいくつか見つかるのですが、フッターまで付いたものは見つかりませんでした。
料理サプリAndroidアプリでフッターの付いたGridViewが必要だったため、今回はGoogleが公開しているヘッダー付きのGridViewのコード1)Androidのギャラリーアプリのためのコードのようですをフッターもつけられるように改造しました。

ソースコードはこちらです

HeaderFooterGridView screenshot

使い方

HeaderFooterGridView.javaをプロジェクトにコピーします。
HeaderFooterGridView.javaは他のクラスには依存しないため、このファイルだけをコピーすればOKです。

【追記 2014/11/1】
Mavenからダウンロードできるようになりました。

compile "jp.co.recruit_mp:android-HeaderFooterGridView:0.1"

【追記ここまで】

ヘッターの追加は HeaderFooterGridView#addHeaderView(View) 、フッターの追加は HeaderFooterGridView#addFooterView(View) ですることができます。

final HeaderFooterGridView headerFooterGridView = (HeaderFooterGridView) findViewById(R.id.HeaderFooterGridView);

HeaderView headerView = new HeaderView(context);
// ヘッダービューを追加します。
// setAdapterでAdapterを設定するよりも前にヘッダーを追加する必要があります。
headerFooterGridView.addHeaderView(headerView);

FooterView footerView = new FooterView(context);
// フッタービューを追加します。
// setAdapterでAdapterを設定するよりも前にフッターを追加する必要があります。
headerFooterGridView.addFooterView(footerView);

// Adapterはヘッダーとフッターを追加した後にセットしてください。
mAdapter = new HeaderFooterGridViewAdapter(this);
headerFooterGridView.setAdapter(mAdapter);

公開したソースコードの中に、デモアプリのコードを含めていますのでそちらも確認してみてください。

ライセンス

Apache License, Version 2.0のライセンスになります。

Copyright (C) 2013 The Android Open Source Project
Copyright (C) 2014 Recruit Marketing Partners Co.,Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

さいごに

今回ご紹介したヘッダー/フッタービューつきのGridViewを使った料理サプリAndroidアプリ 1.1.1が先日リリースされました。

android-HeaderFooterGridView-header-sample

android-HeaderFooterGridView-footer-sample

料理サプリは「プロのレシピが動画で全て見放題!」な毎日の料理が楽しくなる無料のサービスです。
今回ご紹介したAndroidアプリのほか、iOSアプリウェブもありますので、料理のおともにぜひご利用くださいませ。

あと、不具合修正や改良等ありましたら、リポジトリにどしどしプルリクエストいただけると嬉しいです。

脚注   [ + ]

1. Androidのギャラリーアプリのためのコードのようです