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

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

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

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

Kotlin

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

Q&A

解決済

1回答

1264閲覧

kotlin タップされた画像をintent先に表示する

msmsmsmsmsms

総合スコア15

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2021/08/11 05:02

GridViewに表示された画像について、タップされた画像をintentにて別画面に表示したいと考えております。
タップされた画像の名前は、intentにて表示できたものの、画像表示の方法が分からず困っております。
手元のテキストやネット検索で分からなかったため投稿させていただきました。
どなたかご回答いただけましたら幸いです。
宜しくお願いします。

kotlin

1package com.example.gridview0808a 2 3import androidx.appcompat.app.AppCompatActivity 4import java.util.ArrayList; 5import android.content.Context 6import android.content.Intent 7import android.os.Bundle 8import android.util.Log 9import android.view.LayoutInflater 10import android.view.View 11import android.view.ViewGroup 12import android.widget.BaseAdapter 13import kotlinx.android.synthetic.main.activity_main.* 14import kotlinx.android.synthetic.main.food_entry.view.* 15import com.example.gridview0808a.databinding.ActivityMainBinding 16 17class MainActivity : AppCompatActivity() { 18 var adapter: FoodAdapter? = null //FoodAdapterクラスのインスタンスを作成 19 var foodsList = ArrayList<Food>() //<>の中には型を入れる 20 var imageItem3 = null 21 22 private lateinit var binding: ActivityMainBinding 23 24 override fun onCreate(savedInstanceState: Bundle?) { 25 super.onCreate(savedInstanceState) 26 binding = ActivityMainBinding.inflate(layoutInflater) 27 28 val view = binding.root 29 setContentView(view) 30 31 // load foods 32 foodsList.add(Food("Coffee", R.drawable.coffee_pot)) 33 foodsList.add(Food("Espersso", R.drawable.espresso)) 34 foodsList.add(Food("French Fires", R.drawable.french_fries)) 35 foodsList.add(Food("Honey",R.drawable.honey)) 36 adapter = FoodAdapter(this, foodsList) 37 gvFoods.adapter = adapter //adapterをgridViewに紐づけ 38 39 textViewTop.text = "kkkkkk" 40 41 //リスナー登録 .setOnItemClickListener { adapterView, view, position, id -> 42 gvFoods.setOnItemClickListener { adapterView, _, position, _ -> 43 val item = adapterView.getItemAtPosition(position) 44 45 if(item is Food) { //itemがFoodの型か 46 textViewTop.text = item.name 47 imageViewTop.setImageResource(item.image!!) 48 item.name?.let { Log.d("TAG1", it) } 49 50 val intent = Intent(this, FoodDetail::class.java) 51 intent.putExtra("tappedItem", item.name) 52 53 //////////////////ここの記述の仕方が分からず困っております//////////////////////////////////// 54 intent.putExtra("tappedImage", item.image) 55 startActivity(intent) 56 } 57 } 58 } 59 60 class FoodAdapter : BaseAdapter { 61 var foodsList = ArrayList<Food>() 62 var context: Context? = null 63 64 constructor(context: Context, foodsList: ArrayList<Food>) : super() { 65 this.context = context 66 this.foodsList = foodsList 67 } 68 69 override fun getCount(): Int { 70 return foodsList.size 71 } 72 73 override fun getItem(position: Int): Any { 74 return foodsList[position] 75 } 76 77 override fun getItemId(position: Int): Long { 78 return position.toLong() 79 } 80 81 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { 82 val food = this.foodsList[position] 83 84 var inflator = context!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater 85 var foodView = inflator.inflate(R.layout.food_entry, null) 86 foodView.imgFood.setImageResource(food.image!!) 87 foodView.tvName.text = food.name!! 88 return foodView 89 } 90 } 91}

Food.kt

1package com.example.gridview0808a 2 3class Food { 4 var name: String? = null 5 var image: Int? = null 6 7 constructor(name: String, image: Int) { 8 this.name = name 9 this.image = image 10 } 11}

FoodDetail

1package com.example.gridview0808a 2 3import androidx.appcompat.app.AppCompatActivity 4import android.os.Bundle 5import com.example.gridview0808a.databinding.ActivityFoodDetailBinding 6import kotlinx.android.synthetic.main.activity_food_detail.* 7 8 9class FoodDetail : AppCompatActivity() { 10 11 private lateinit var binding: ActivityFoodDetailBinding 12 13 var tappedItem:String? = "something" 14 var tappedImage:Int? = 0 15 16 override fun onCreate(savedInstanceState: Bundle?) { 17 super.onCreate(savedInstanceState) 18 binding = ActivityFoodDetailBinding.inflate(layoutInflater) 19 val view = binding.root 20 setContentView(binding.root) 21 22 tappedItem = intent.getStringExtra("tappedItem") 23 textViewSecond.text = tappedItem 24 25 //以下の記述を訂正する必要があると思っております。 26 tappedImage = intent.getIntExtra("tappedImage") 27 imageViewSecond.setImageResource(tappedImage!!) 28 29 }

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。
intent.putExtra("tappedImage", item.image.toString().toInt())

お騒がせ致しました。

投稿2021/08/11 08:17

msmsmsmsmsms

総合スコア15

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

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

jimbe

2021/08/12 05:41

元のままでも item.image は Int だと思うのですが…。動作しなかったのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問