Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android開発】ListViewの項目を動的に更新する方法をわかりやすく解説

はじめに

Androidアプリ開発では、リスト表示に使われる「ListView」の内容を実行中に書き換えたい場面がよくあります。例えば、ユーザーがリストの項目をタップしたときに、その項目の値を別の値に変更するといった処理です。

本記事では、ListViewの項目をタップすると、その値が「100」に動的に更新されるサンプルアプリを題材に、具体的な実装手順を初心者向けに解説します。

手順1:Android Studioで新規プロジェクトを作成する

まずはAndroid Studioを起動し、メニューから File → New Project を選択して新しいプロジェクトを作成します。必要な項目(プロジェクト名、保存先、使用言語など)を入力して、空のアクティビティ(Empty Activity)テンプレートを選んでおきましょう。

手順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"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

このコードでは、画面全体を縦方向の LinearLayout で構成し、その中にID「list」を持つ ListView を配置しています。これにより、画面上にリスト形式のUIが表示されるようになります。

手順3:MainActivity.java を実装する

続いて、src/MainActivity.java に以下のコードを追加します。ここが今回のポイントとなる部分です。

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ListView list;
    ArrayList<String> arrayList = new ArrayList<>();
    ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        list = findViewById(R.id.list);

        // リストに初期データを追加
        arrayList.add("Item 1");
        arrayList.add("Item 2");
        arrayList.add("Item 3");
        arrayList.add("Item 4");
        arrayList.add("Item 5");

        // アダプターを作成してListViewにセット
        adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, arrayList);
        list.setAdapter(adapter);

        // 項目タップ時の処理
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent,
                                    View view,
                                    int position,
                                    long id) {
                // タップされた項目の値を「100」に更新
                arrayList.set(position, "100");
                adapter.notifyDataSetChanged();
                Toast.makeText(MainActivity.this,
                        "値を100に更新しました", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

コードのポイント

  • ArrayList でリストのデータを管理し、ArrayAdapter を通じてListViewに表示しています。
  • setOnItemClickListener() により、項目がタップされたときのイベントを受け取ります。
  • arrayList.set(position, "100") で、タップされた位置のデータを「100」に書き換えます。
  • notifyDataSetChanged() を呼び出すことで、アダプターにデータの変更を通知し、ListViewの表示が自動的に再描画されます。ここが「動的更新」の核心部分です。

アプリを実行してみよう

それでは、実際にアプリを起動してみましょう。Android端末をパソコンにUSB接続し、デバッグモードを有効にしておいてください。

Android Studioでプロジェクト内の任意のアクティビティファイルを開き、ツールバーの実行(Run)アイコンをクリックします。接続済みのモバイルデバイスを選択すると、アプリが端末上で起動します。

初回起動時は、以下のようにリスト項目が表示された初期画面が確認できます。

【Android開発】ListViewの項目を動的に更新する方法をわかりやすく解説

実行結果の確認

リスト内の任意の項目をタップすると、その項目の値が「100」に更新されます。Toastメッセージも同時に表示され、更新が成功したことがひと目でわかります。

【Android開発】ListViewの項目を動的に更新する方法をわかりやすく解説

まとめ

ListViewの内容を動的に更新するには、以下の流れを押さえておくことが重要です。

  1. データ源(ArrayListなど)の該当要素を書き換える
  2. notifyDataSetChanged() を呼び出してアダプターに変更を通知する

この仕組みを理解しておけば、チャットアプリのメッセージ一覧や設定画面の項目更新など、さまざまな場面に応用できます。ぜひご自身のプロジェクトでも試してみてください。

  1. AndroidのAlertDialogにListViewを表示する方法を徹底解説

    この記事では、AndroidのAlertDialog(アラートダイアログ)の中にListViewを表示する方法を、実際に動作するサンプルコードとともに段階的に解説します。ボタンをタップするとダイアログが開き、国名の一覧がリスト形式で表示されるシンプルなアプリを構築していきます。 手順1:新規プロジェクトの作成 Android Studioを起動し、メニューから「File」⇒「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。 手順2:activity_main.xmlにコードを追加 res/layout/activity_main.xm

  2. Androidでボタンを動的に追加する方法をステップ解説

    この記事では、Androidアプリの実行時にJavaコードからボタンを動的に生成・追加する方法を、実際のコード例とともにわかりやすく解説します。XMLレイアウトにあらかじめボタンを配置するのではなく、プログラム内で新しいButtonインスタンスを作成し、画面に反映させる流れを学びましょう。手順1:Android Studioで新規プロジェクトを作成するまずAndroid Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目(プロジェクト名、パッケージ名、保存先など)をすべて入力してプロジェクトを完成させてください。手順2