AndroidでSortedSetインターフェースを使う方法をステップごとに解説
AndroidでSortedSetインターフェースを使用する方法
このチュートリアルでは、Androidアプリ開発においてSortedSetインターフェースを使用する方法を実例とともに紹介します。SortedSetは、要素を常にソートされた状態で管理できるインターフェースであり、その代表的な実装クラスがTreeSetです。本記事では、ユーザーが入力した名前をTreeSetに保存し、自動的に昇順に並べ替えた結果をListViewに表示するサンプルアプリを作成します。
ステップ1:Android Studioで新規プロジェクトを作成
まず、Android Studioで新しいプロジェクトを作成します。メニューから「File → New Project」を選択し、必要な情報をすべて入力してプロジェクトを作成してください。
ステップ2:レイアウトファイル(activity_main.xml)を作成
次に、res/layout/activity_main.xml に以下のコードを追加します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:hint="Enter Name"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/save"
android:text="Save"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/refresh"
android:text="Refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
レイアウトの構成について
上記のレイアウトでは、名前を入力するためのEditText、データを保存する「Save」ボタン、リストを更新する「Refresh」ボタン、そして結果を表示するListViewを配置しています。ユーザーがSaveボタンをタップすると入力データがTreeSet(ArrayList経由)に格納され、RefreshボタンをタップするとListViewの表示内容が更新されます。
ステップ3:MainActivity.javaにコードを追加
続いて、src/MainActivity.java に以下のコードを記述します。
package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
public class MainActivity extends AppCompatActivity {
EditText name;
ArrayAdapter arrayAdapter;
ArrayList<String> array_list;
SortedSet set = new TreeSet();
private ListView listView;
@Override
protected void onCreate(Bundle readdInstanceState) {
super.onCreate(readdInstanceState);
setContentView(R.layout.activity_main);
array_list = new ArrayList<>();
name = findViewById(R.id.name);
listView = findViewById(R.id.listView);
findViewById(R.id.refresh).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
arrayAdapter.notifyDataSetChanged();
listView.invalidateViews();
listView.refreshDrawableState();
}
});
findViewById(R.id.save).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!name.getText().toString().isEmpty()) {
set.add(name.getText().toString());
array_list.clear();
array_list.addAll(set);
arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array_list);
listView.setAdapter(arrayAdapter);
Toast.makeText(MainActivity.this, "Inserted", Toast.LENGTH_LONG).show();
} else {
name.setError("Enter NAME");
}
}
});
}
}
コードのポイント
- SortedSet set = new TreeSet(); — TreeSetはSortedSetの実装クラスであり、要素を自然順序(ここでは文字列のアルファベット順)で自動的に並べ替えます。
- set.add() — 入力された名前をTreeSetに追加します。重複する値は自動的に除外されます。
- array_list.addAll(set) — ソート済みのTreeSetの内容をArrayListにコピーし、ArrayAdapterを通じてListViewへ表示します。
- notifyDataSetChanged() — Refreshボタン押下時にアダプターへデータ変更を通知し、ListViewの表示を再描画します。
アプリを実行して動作を確認
それではアプリを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続していることを前提としています。Android Studioからプロジェクト内のアクティビティファイルを開き、ツールバーのRunアイコンをクリックしてください。デバイスを選択してアプリを起動すると、以下のような初期画面がスマートフォンに表示されます。

実行結果の確認
上記の実行結果のように、EditTextに入力した名前がTreeSetに追加され、ソート済みの状態でArrayListに格納されてListViewへ反映されます。複数の名前を入力すると、常にアルファベット順(自然順序)で並べ替えられたリストが表示されることが確認できるはずです。
このように、SortedSetインターフェース(TreeSet)を活用することで、Androidアプリでも簡単に自動ソート済みのコレクションを扱うことができます。重複排除とソートを同時に実現したい場面で、ぜひ活用してみてください。
-
【Android】XmlPullParserを使ってXMLを解析する方法をステップ別に解説
XmlPullParserとは XmlPullParserは、Androidに標準で組み込まれているXMLパーサーです。イベント駆動型(プル型)の解析方式を採用しており、XMLドキュメントを先頭から順に読み進めながら「開始タグ」「テキスト」「終了タグ」といったイベントを一つずつ処理していきます。DOMのようにドキュメント全体をメモリ上に展開しないため、省メモリかつ高速に動作し、リソースが限られたモバイル環境でのXML解析に最適です。 本記事では、XmlPullParserを使ってユーザー情報が記述されたXMLファイルを解析し、その結果をListViewに表示するサンプルアプリの作成手順を、ステ
-
Android TVでADBを設定して使う方法|PCとの接続手順と活用テクニック
AndroidスマートフォンであれAndroid TVであれ、OSの本質は同じです。つまり、Android TVは他のAndroidデバイスと同じように自由にカスタマイズできるということです。 Androidアプリのサイドローディングなど、本格的なカスタマイズを行いたい場合は、「Android Debug Bridge(ADB)」の力が必要になります。この記事では、ADBを使ってAndroid TVをPCに接続する方法を詳しく解説します。 PCにADBをセットアップする方法 まず最初のステップは、お使いのPCにADBをインストールすることです。そのためには、Android Developers