LoginSignup
0
0

More than 1 year has passed since last update.

AndroidStudio リストデータが「固定」と「不変」の違い

Last updated at Posted at 2021-06-11

この記事では、超初心者な私が超初心者向けに書いた内容になっています。

さて、今回はアンドロイドアプリのリストデータを設定する時の方法について、まとめました。
なお、データを扱う上で基本的にはDBとの接続を図りますが、今回は、文字列としてデータを扱う場合と、kotlinファイルに記述してリストデータを扱う方法についてのみのまとめとなります。

リストデータが固定の場合

リストデータとして、strings.xmlに記述した文字列リストを使用する。

サンプルコード

strings.xml
<resources>
    <string name="app_name">リスト選択サンプル</string>
    <string-array name="lv_menu">
        <item>唐揚げ定食</item>
        <item>ハンバーグ定食</item>
        <item>生姜焼き定食</item>
        <item>ステーキ定食</item>
        <item>野菜炒め定食</item>
        <item>とんかつ定食</item>
        <item>ミンチかつ定食</item>
        <item>コロッケ定食</item>
        <item>回鍋肉定食</item>
        <item>麻婆豆腐定食</item>
        <item>青椒肉絲定食</item>
        <item>焼き魚定食</item>
        <item>焼肉定食</item>
    </string-array>
</resources>
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lvMenu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:entries="@array/lv_menu"/>

実行すると、以下の画面になる。
スクリーンショット 2021-06-11 11.56 1 (1).png

リストデータが可変の場合

Kotlinで記述する必要がある。
まずはサンプルコードを記載します。

サンプルコード

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lvMenu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
MainActivity.kt
package com.websarva.wings.android.listviewsample2

import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //ListViewオブジェクトを取得
        val lvMenu = findViewById<ListView>(R.id.lvMenu)
        //リストビューに表示するリストデータを作成
        var menuList = mutableListOf("からあげ定食","ハンバーグ定食","生姜焼き定食","ステーキ定食",
            "野菜炒め定食","とんかつ定食","ミンチかつ定食","チキンかつ定食","コロッケ定食","回鍋肉定食",
            "麻婆豆腐定食","青椒肉絲定食","焼き魚","焼肉定食")
        //アダプタオブジェクトを生成
        val adapter = ArrayAdapter(this@MainActivity,android.R.layout.simple_list_item_1,menuList)
        //リストビューにアダプトオブジェクトを設定
        lvMenu.adapter = adapter
    }
}

上記のコードを実行すると、固定の場合と同じ画面になる。

解説

アクティビティ中でリストデータを生成する場合の手順

1,リストデータを用意する
2,上記リストデータをもとにアダプタオブジェクトを生成する
3,ListViewにアダプタオブジェクトをセットする

1,リストデータを用意する

var menuList = mutableListOfが該当します。

2,上記リストデータをもとにアダプタオブジェクトを生成する

val adapter = ArrayAdapterが該当します。
アダプタとは、リストビューに表示するリストデータを管理し、リストビューの各行にそのリストデータを当てはめていく動きをするオブジェクトです。

イメージ画像

151221a2.png
参照

アダプタオブジェクトの生成

アダプタオブジェクトを生成するには、adapterインターフェイスを実装したクラスを利用します。

主なadapterインターフェイス3種類

インターフェイス名 内容
ArrayAdapter 元データとしてArrayまたは、MutableListを利用
SimpleAdapter 元データとしてMutableList>を利用  XMLデータやJSONデータの解析結果を格納するのに便利
SimpleCursorAdapter 元データとしてCursorオブジェクトを利用 Cursorオブジェクトは、Android端末内のDBを利用する際、SELECT文の結果が格納されたもの

今回は、定食リストをMutableListで生成しているので、ArrayAdapterを使用している。

3,ListViewにアダプタオブジェクトをセットする

lvMenu.adapter = adapterが該当する
ListViewにアダプタオブジェクトをセットするには、ListViewのadapterプロパティを利用する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0