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 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/12 05:41