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

AndroidでListViewのアイテム背景色を変更する方法【コード例付きで解説】

この記事では、AndroidアプリでListViewの各アイテムの背景色を変更する方法を、実際のコード例とともにわかりやすく解説します。リストの項目をタップしたときに背景色が変わるシンプルなサンプルアプリを作成しましょう。

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

まず、Android Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力し、プロジェクトのセットアップを完了させてください。

手順2:レイアウトファイル(activity_main.xml)にListViewを配置

次に、res/layout/activity_main.xml に以下のコードを追加します。ここでは、画面全体に表示されるListViewを1つ配置したシンプルな構成にしています。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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">

    <ListView
        android:id="@+id/mobile_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</android.support.constraint.ConstraintLayout>

手順3:MainActivity.javaにクリック処理を実装

続いて、src/MainActivity.java に以下のコードを記述します。ポイントは setOnItemClickListener() です。リストの項目がタップされると onItemClick() が呼ばれるため、その中で view.setBackgroundColor() を実行することで、タップされたアイテムだけの背景色を colorPrimaryDark に変更できます。

package app.tutorialspoint.com.sample;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {

    String[] mobileArray = {"Android", "IPhone", "WindowsMobile", "Blackberry",
            "WebOS", "Ubuntu", "Windows7", "Max OS X"};

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

        ListView mobileList = findViewById(R.id.mobile_list);
        ArrayAdapter adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, mobileArray);
        mobileList.setAdapter(adapter);

        mobileList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // タップされたアイテムの背景色を変更する
                view.setBackgroundColor(getColor(R.color.colorPrimaryDark));
            }
        });
    }
}

手順4:AndroidManifest.xmlを確認・編集

最後に、androidManifest.xml に以下のコードを追加します。新規プロジェクト作成時に自動生成される内容ですが、MainActivityがランチャー(起動用)アクティビティとして正しく登録されていることを確認しておきましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

アプリを実行して動作を確認しよう

それでは、アプリを実際に実行してみましょう。ここでは、実機のAndroidスマートフォンをパソコンに接続しているものとします。Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックしてください。接続したモバイルデバイスを選択すると、端末に以下のような画面が表示されます。

AndroidでListViewのアイテム背景色を変更する方法【コード例付きで解説】

まとめ

ListViewのアイテム背景色を変更する基本の流れは以下の通りです。

  • setOnItemClickListener() でタップイベントを受け取る
  • onItemClick() の中で view.setBackgroundColor() を呼び出す
  • 色は colors.xml に定義したカラーリソースを getColor(R.color.xxx) で取得して指定する

なお、選択状態を複数アイテムで保持したい場合は、アダプター側でpositionごとの状態を管理する実装が必要になります。

補足:RecyclerViewを使う場合

近年のAndroid開発では、ListViewよりも柔軟性とパフォーマンスに優れたRecyclerViewの使用が推奨されています。とはいえ、「ビューへの参照を取得して setBackgroundColor() を呼ぶ」という背景色変更の基本的な考え方は共通しているため、本記事の内容はそのまま応用できます。

  1. Tkinterでリストボックスの色を完全に変更する方法

    Tkinterのリストボックス(Listbox)ウィジェットは、大量のデータ項目をリスト形式で表示したい場合に非常に便利なUI部品です。リストボックス全体の背景色や文字色を変更するなど、外観に関するプロパティを設定したい場合は、configure(**options)メソッドを使用します。このメソッドにオプションを渡すことで、ウィジェットのさまざまなプロパティを動的に変更できます。サンプルコード以下は、リストボックスの背景色・文字色・フォントを一括して変更する例です。# 必要なライブラリをインポート from tkinter import * # tkinterフレーム(ウィンドウ)のインス

  2. 【iOS】メモアプリの背景色を変更する方法|ライト/ダーク切り替えと罫線・グリッド設定も解説

    iOSの標準「メモ」アプリを使っていると、背景が端末全体の表示設定に自動的に連動してしまう点に不便さを感じることがあります。ライトモードが有効なときは明るい背景に、ダークモードのときは暗い背景になり、個別にコントロールできないように見えます。しかし実は、iOSではメモごとの背景色を簡単に変更できます。この記事では、特定のメモだけ背景を変える方法、すべてのメモに一括で適用する方法、さらに罫線やグリッド背景を追加するカスタマイズ術まで、わかりやすく解説します。注意:メモアプリで異なる背景を設定するには、端末がiOS 13 / iPadOS 13以降である必要があります。古いバージョンをお使いの場合