やりたいこと
ListViewに表示するmutableMapの内容を、forEachでループさせて作成したいです。
現在、下記のコードでListViewに画像と配列の文字列を表示することができています。
FishListActivity.kt
kotlin
1... 2class FishListActivity : AppCompatActivity() { 3 override fun onCreate(savedInstanceState: Bundle?) { 4 super.onCreate(savedInstanceState) 5 setContentView(R.layout.activity_fish_list) 6 7 // 魚のリスト 8 val all_fish_list = listOf( 9 "bora", 10 "buri", 11 "iwana", 12 "katsuo", 13 "maguro", 14 "sanma" 15 ) 16 17 // 魚の表示名とサイズ記録用マップ 18 val bora = mutableMapOf("name" to "ボラ", "MAX" to 10, "MIN" to 10) 19 val buri = mutableMapOf("name" to "ブリ", "MAX" to 10, "MIN" to 10) 20 val iwana = mutableMapOf("name" to "イワナ", "MAX" to 10, "MIN" to 10) 21 val katsuo = mutableMapOf("name" to "カツオ", "MAX" to 10, "MIN" to 10) 22 val maguro = mutableMapOf("name" to "マグロ", "MAX" to 10, "MIN" to 10) 23 val sanma = mutableMapOf("name" to "サンマ", "MAX" to 10, "MIN" to 10) 24 25 val data = mutableListOf( 26 mutableMapOf ("image" to R.drawable.bora, "name" to "ボラ", 27 "MAXrecord" to String.format(resources.getString(R.string.fish_MAX_size), bora["MAX"]), 28 "MINrecord" to String.format(resources.getString(R.string.fish_MIN_size), bora["MIN"])) 29 ) 30 31 // リストに表示するデータを作成 32 all_fish_list.forEach{ name -> 33 data.add( 34 mutableMapOf ("image" to R.drawable.bora, "name" to bora["name"].toString(), 35 36 // ↑でnameをboraの部分に当てはめることができないか? 37 38 "MAXrecord" to String.format(resources.getString(R.string.fish_MAX_size), bora["MAX"]), 39 "MINrecord" to String.format(resources.getString(R.string.fish_MIN_size), bora["MIN"])) 40 ) 41 } 42 43 // ListViewにデータをセットする 44 val list = findViewById<ListView>(R.id.fishList) 45 list.adapter = SimpleAdapter( 46 this, 47 data, 48 R.layout.list_item, 49 arrayOf("image", "name", "MAXrecord", "MINrecord"), 50 intArrayOf(R.id.image, R.id.name, R.id.MAXrecord, R.id.MINrecord) 51 ) 52 } 53}
上記のコードにて、「R.drawable.bora」の「bora」の部分をforEachのnameに置き換えたいです。
同様に、「bora["name"]」の「bora」の部分も置き換えたいです。
わからないこと1
「bora」の部分を「name」の値に置き換える方法が分かりません。
文字列のように「R.drawable.${name}」としましたがうまくいきませんでした。
該当箇所
kotlin
1all_fish_list.forEach{ name -> 2 data.add( 3 mutableMapOf ("image" to R.drawable.bora, "name" to bora["name"].toString(),
わからないこと2
「val data」は、中身が空の状態で宣言したいのですが、「mutableLitst<mutableMapOf>()」
と宣言することはできませんでした。
mutableMapを型としてとる中身が空のmutableListを宣言するにはどうすれば良いのでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。