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

AndroidでListViewに文字列やその他のデータ型を追加する方法

このチュートリアルでは、AndroidアプリでListViewに文字列(String)やその他のデータ型を動的に追加する方法を、サンプルコードとともにステップごとに解説します。

ステップ1:新規プロジェクトの作成

Android Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。

ステップ2:レイアウトファイルの編集

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 を縦方向に配置しています。ユーザーが保存ボタンをタップすると入力データがArrayListに格納され、更新ボタンで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.Collections;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends AppCompatActivity {
    EditText name;
    ArrayAdapter arrayAdapter;
    ArrayList<String> array_list;
    Set set = new HashSet();
    private ListView listView;
    @Override
    protected void onCreate(Bundle readdInstanceState) {
        super.onCreate(readdInstanceState);
        setContentView(R.layout.activity_main);
        array_list = new ArrayList<String>();
        array_list.ensureCapacity(20);
        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();
                    if (array_list.isEmpty()) {
                        array_list.addAll(set);
                        Collections.checkedCollection(array_list,String.class);
                        array_list.trimToSize();
                        arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, array_list);
                        listView.setAdapter(arrayAdapter);
                    } else {
                        listView.setVisibility(View.GONE);
                    }
                    Toast.makeText(MainActivity.this, "Inserted", Toast.LENGTH_LONG).show();
                } else {
                    name.setError("Enter NAME");
                }
            }
        });
    }
}

コードのポイント

  • 入力値は HashSet に格納されるため、重複したデータが自動的に除外されます。
  • 保存時に入力欄が空の場合は setError() によってエラーメッセージが表示されます。
  • データ追加後は Toast で「Inserted(登録完了)」を通知します。
  • 更新ボタンでは notifyDataSetChanged() を呼び出してListViewの表示を再描画しています。

アプリの実行

それではアプリケーションを実行してみましょう。実際のAndroid端末をパソコンに接続していることを前提とします。Android Studioからアプリを起動するには、プロジェクト内のアクティビティファイルを開き、ツールバーの実行アイコンをクリックします。ドロップダウンから接続済みのモバイルデバイスを選択すると、端末上にアプリの初期画面が表示されます。

AndroidでListViewに文字列やその他のデータ型を追加する方法

上記の実行結果では、名前として文字列だけでなく整数値も入力してリストに登録しています。このようにArrayAdapterとArrayListを組み合わせることで、ListViewに対してさまざまなデータを柔軟に追加・表示できるようになります。

  1. AndroidアプリでSharedPreferencesのデータを削除する方法を徹底解説

    この記事では、AndroidアプリでSharedPreferencesに保存したデータを削除する方法を、実際のサンプルコードとともにステップ形式で解説します。SharedPreferencesはアプリの設定値やユーザー情報などをキーバリュー形式で手軽に保存できる仕組みですが、不要になったデータは適切に削除することが重要です。SharedPreferencesのデータ削除の基本SharedPreferencesからデータを削除するには、Editorオブジェクトのremove(String key)メソッドを使用します。指定したキーに紐づく値のみを削除したい場合はremove()を、すべてのデータ

  2. 【Android】ListViewのCheckBoxにデータベースのデータをバインドする方法

    はじめにこの記事では、データベースから取得したデータを、AndroidアプリのListView内に配置したCheckBox(チェックボックス)にバインドする方法を、実際のコード例をもとにステップごとに解説します。サンプルでは、Androidのバージョンコードネームの一覧をリスト形式で表示し、各行のチェックボックスで選択状態を切り替えられるようにします。ステップ1:新規プロジェクトを作成するAndroid Studioを起動し、メニューから「File」⇒「New Project」を選択して、新しいプロジェクトを作成します。必要な項目をすべて入力し、プロジェクトのセットアップを完了させてください。