AndroidでRecyclerViewを使う方法!学生名簿アプリの作成手順を解説
RecyclerView(リサイクラービュー)は、ListViewのより進化したバージョンであり、ViewHolderデザインパターンに基づいて動作するUIコンポーネントです。RecyclerViewを活用すれば、リスト形式だけでなくグリッド形式でもアイテムを柔軟に表示できます。
本記事では、学生の名前と年齢を一覧表示できるスタイリッシュな学生名簿アプリを実際に作成しながら、RecyclerViewの組み込み手順を段階的に解説します。
実装の全体像
作業は「プロジェクトの準備」「レイアウト定義」「アダプタとデータクラスの実装」という流れで進めます。掲載しているコードはそのままコピーして使えるので、初心者の方でも安心して取り組めます。
ステップ1:新規プロジェクトの作成
Android Studioを起動し、メニューから「File → New Project」を選択します。プロジェクト作成に必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。
ステップ2:build.gradleへ依存関係を追加
build.gradleファイルを開き、RecyclerViewライブラリの依存関係を追加します。
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.andy.tutorialspoint"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:recyclerview-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
ステップ3:activity_main.xmlにコードを追加
res/layout/activity_main.xmlに以下のコードを記述します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
xmlns:app="https://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main"
tools:context=".MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
/>
</RelativeLayout>
上記のコードでは、RelativeLayoutを親レイアウトとして配置し、その中にRecyclerViewを追加しています。
ステップ4:MainActivity.javaにコードを追加
続いて、src/MainActivity.javaに以下のコードを記述します。
package com.example.andy.tutorialspoint;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private StudentAdapter studentAdapter;
private List studentDataList =new ArrayList<>();
@TargetApi(Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view);
studentAdapter=new StudentAdapter(studentDataList);
RecyclerView.LayoutManager manager=new LinearLayoutManager(this);
recyclerView.setLayoutManager(manager);
recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
recyclerView.setAdapter(studentAdapter);
StudentDataPrepare();
}
private void StudentDataPrepare() {
studentData data=new studentData("sai",25);
studentDataList.add(data);
data=new studentData("sai",25);
studentDataList.add(data);
data=new studentData("raghu",20);
studentDataList.add(data);
data=new studentData("raj",28);
studentDataList.add(data);
data=new studentData("amar",15);
studentDataList.add(data);
data=new studentData("bapu",19);
studentDataList.add(data);
data=new studentData("chandra",52);
studentDataList.add(data);
data=new studentData("deraj",30);
studentDataList.add(data);
data=new studentData("eshanth",28);
studentDataList.add(data);
}
}
上記のコードでは、RecyclerViewとStudentAdapterをセットアップしています。StudentAdapterにはArrayListとしてstudentDataListを渡しており、このリストには学生の名前と年齢が格納されています。
ステップ5:StudentAdapter.javaの実装
次に、src/StudentAdapter.javaを以下のように編集します。
package com.example.andy.tutorialspoint;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
class StudentAdapter extends RecyclerView.Adapter {
List studentDataList;
public StudentAdapter(List studentDataList) {
this.studentDataList=studentDataList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.student_list_row, viewGroup, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(MyViewHolder viewHolder, int i) {
studentData data=studentDataList.get(i);
viewHolder.name.setText(data.name);
viewHolder.age.setText(String.valueOf(data.age));
}
@Override
public int getItemCount() {
return studentDataList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView name,age;
public MyViewHolder(View itemView) {
super(itemView);
name=itemView.findViewById(R.id.name);
age=itemView.findViewById(R.id.age);
}
}
}
アダプタクラスは、主に以下の4つの要素で構成されています。
onCreateViewHolder():ViewHolderを生成し、ビューを返すメソッドです。
onBindViewHolder():生成済みのViewHolderにデータをバインド(結び付け)するメソッドです。
getItemCount():リストの件数(サイズ)を返すメソッドです。
MyViewHolderクラス:RecyclerView.ViewHolderを継承した、ViewHolderのインナークラスです。
ステップ6:student_list_row.xmlを編集
res/layout/student_list_row.xmlを以下のように編集します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:weightSum="1"
android:layout_height="wrap_content">
<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_weight="0.5"
android:gravity="center"
android:textSize="15sp"
android:layout_height="100dp" />
<TextView
android:id="@+id/age"
android:layout_width="0dp"
android:layout_weight="0.5"
android:gravity="center"
android:textSize="15sp"
android:layout_height="100dp" />
</LinearLayout>
このリストアイテムのビューでは、名前と年齢を表示するための2つのTextViewを作成しています。
ステップ7:studentData.javaの実装
最後に、src/studentData.javaを以下のように編集します。
package com.example.andy.tutorialspoint;
class studentData {
String name;
int age;
public studentData(String name, int age) {
this.name=name;
this.age=age;
}
}
上記のコードは、学生データ(名前・年齢)を保持するためのオブジェクトを定義したものです。
アプリの実行と動作確認
それでは、アプリケーションを実行してみましょう。ここでは、実機のAndroidスマートフォンがパソコンに接続されているものとします。Android Studioからアプリを起動するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択画面でお使いのモバイル端末を選択すると、端末に以下のような初期画面が表示されます。

画面を下にスクロールすると、以下のように結果が表示されます。

まとめ
本記事では、RecyclerViewの基本的な使い方として、依存関係の追加、レイアウト定義、アダプタとViewHolderの実装、データクラスの作成までの一連の手順を紹介しました。ViewHolderデザインパターンを採用することで、ListViewよりも高いパフォーマンスで大量のデータを効率よく表示できます。また、LayoutManagerをGridLayoutManagerに変更するだけでグリッド表示にも対応できるため、ぜひいろいろな用途に応用してみてください。
-
バイブレーション・サウンド・アクション・ビッグビュースタイル対応のAndroid通知(Notification)実装例
本記事では、バイブレーション、サウンド、アクションボタン、そしてビッグビュースタイル(Big View Style)を組み合わせたAndroid通知の実装方法を、ステップごとに解説します。 通知はアプリとユーザーをつなぐ重要な接点です。テキスト表示だけでなく、振動や効果音で注意を引きつけ、タップできる操作を添え、長文を見やすく展開表示できれば、ユーザー体験(UX)は大きく向上します。 手順1:Android Studioで新規プロジェクトを作成 Android Studioを起動し、メニューから「File」⇒「New Project」を選択します。プロジェクト名やパッケージ名などの必要事項
-
コントローラー対応で快適に遊べるiOS・Androidおすすめゲーム21選
数年前、AppleがiOSデバイス向けに公式のゲームコントローラー対応を導入したことは、大きな転換点となりました。タッチ操作でも十分楽しめるとはいえ、コントローラー対応はプレイ体験をまったく新しいレベルへと引き上げてくれます。もちろんAndroidでは、コントローラー対応は以前から実現していました。 この記事では、コントローラーを使うことで真価を発揮するゲーム、あるいはコントローラーなしでは正直プレイが難しいタイトルに絞ってご紹介します。パズルゲームやポイント&クリック型アドベンチャーなどは対象外です。始める前に、お使いのiOSまたはAndroidデバイスにゲームコントローラーを接続しておき