質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

429閲覧

値によってlistの中身を変更したい

makura123

総合スコア3

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2023/01/30 14:01

実現したいこと

if分を使っています。
別のActivityからputExtraで値を持ってきてその値に応じてlistの中身を変えたい。

発生している問題・エラーメッセージ

Unresolved reference: list1

該当のソースコード

Kotlin

1 //変数宣言 2 var answer1 = 0 3 var answer2 = 0 4 var answer3 = 0 5 var answer4 = 0 6 var kind = 0 7 var answer = 0 8 var badanswer = 0 9 var q_data_4 = 0 10 11 12 //値の取得 13 val data_4 = intent.getIntExtra("DATA_4", 0) 14 15 16 //画像のシャッフル 17 18 if(q_data_4 == 0) { 19 val list1 = listOf(R.drawable.ichigo, R.drawable.enpitu, R.drawable.kesigomu, R.drawable.apple) 20 } else { 21 val list1 = listOf(R.drawable.train, R.drawable.patrolcar, R.drawable.hamburger ,R.drawable.hotdog) 22 } 23 24 val r = list1.shuffled() 25 btn1_4.setImageResource(r[0]) 26 btn2_4.setImageResource(r[1]) 27 btn3_4.setImageResource(r[2]) 28 btn4_4.setImageResource(r[3])

試したこと

if分の中で宣言しているlist1をif分の外では使えないのでこのようなエラーが出ていると思います。この場合、どのようにすれば値に応じてlistの中身を変更でき、かつ正常に動作させることができるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2023/01/30 20:22

宣言を if の前に出すか、if を式として使うかでしょうね。
makura123

2023/01/31 02:55

if文を式として使うとはどういうことなのでしょうか?
guest

回答1

0

ベストアンサー

list1 の宣言を if の前に出すか、(この場合、list1 の型を指定する必要があります。)

Kotlin

1 val list1: List<Int> 2 if (q_data_4 == 0) { 3 list1 = listOf(R.drawable.ichigo, R.drawable.enpitu, R.drawable.kesigomu, R.drawable.apple) 4 } else { 5 list1 = listOf(R.drawable.train, R.drawable.patrolcar, R.drawable.hamburger ,R.drawable.hotdog) 6 }

if を式として使うと良いでしょう。(C や Java の三項演算子の代わりとして使えます。)

Kotlin

1 val list1 = if (q_data_4 == 0) { 2 listOf(R.drawable.ichigo, R.drawable.enpitu, R.drawable.kesigomu, R.drawable.apple) 3 } else { 4 listOf(R.drawable.train, R.drawable.patrolcar, R.drawable.hamburger ,R.drawable.hotdog) 5 }

参考: Kotlin で条件を記述する | Android Developers

投稿2023/01/31 04:18

hoshi-takanori

総合スコア7891

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makura123

2023/01/31 04:45

if分を式として使うほうを試してみたら上手くいきました。ありがとうございます! if分を式として使うほうでelseではなく"q_data_4の値が1だったら"のように記述したいのですがどのようにすればよいのでしょうか? そのままlist1 = if (q_data_4 == 1)をelseの部分に入れたらエラーになりました。
hoshi-takanori

2023/01/31 05:04

q_data_4 が 0 でも 1 でもない場合はどうしますか?
makura123

2023/01/31 06:39

0でも1でもない場合はelseで処理しようと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問