android,Kotlin初心者です。
GridViewとして表示した画像を一覧表示し、その画像をタップした際に、textViewTopに選択した画像の名前を表示したいです。
数時間調べて分からなかったため投稿させていただきました。
どなたかご回答いただけましたら幸いです。
宜しくお願いします。
kotlin mainactivity.kt
1package com.example.gridview0808a 2 3import androidx.appcompat.app.AppCompatActivity 4import java.util.ArrayList; 5import android.content.Context 6import android.os.Bundle 7import android.view.LayoutInflater 8import android.view.View 9import android.view.ViewGroup 10import android.widget.BaseAdapter 11import android.widget.Toast 12import kotlinx.android.synthetic.main.activity_main.* 13import kotlinx.android.synthetic.main.food_entry.view.* 14import com.example.gridview0808a.databinding.ActivityMainBinding 15 16class MainActivity : AppCompatActivity() { 17 var adapter: FoodAdapter? = null //FoodAdapterクラスのインスタンスを作成 18 var foodsList = ArrayList<Food>() //<>の中には型を入れる 19 20 private lateinit var binding: ActivityMainBinding 21 22 override fun onCreate(savedInstanceState: Bundle?) { 23 super.onCreate(savedInstanceState) 24 binding = ActivityMainBinding.inflate(layoutInflater) 25 val view = binding.root 26 setContentView(view) 27 28 // load foods 29 foodsList.add(Food("Coffee", R.drawable.coffee_pot)) 30 foodsList.add(Food("Espersso", R.drawable.espresso)) 31 foodsList.add(Food("French Fires", R.drawable.french_fries)) 32 foodsList.add(Food("Honey",R.drawable.honey)) 33 foodsList.add(Food("Strawberry", R.drawable.strawberry_ice_cream)) 34 foodsList.add(Food("Sugar cubes", R.drawable.sugar_cubes)) 35 foodsList.add(Food("French Fires", R.drawable.french_fries)) 36 foodsList.add(Food("Honey",R.drawable.honey)) 37 foodsList.add(Food("Strawberry", R.drawable.strawberry_ice_cream)) 38 foodsList.add(Food("Sugar cubes", R.drawable.sugar_cubes)) 39 adapter = FoodAdapter(this, foodsList) 40 gvFoods.adapter = adapter 41 42 43 gvFoods.setOnItemClickListener { adapterView, view, position, id -> 44 Toast.makeText(this, "${adapterView.getItemAtPosition(position)} ", Toast.LENGTH_SHORT).show() 45 46 //不明点////////////////////////////////////////////////////////////// 47 //xmlファイル id:textViewTopに選択したアイテムの名前を表示したい↓ 48 textViewTop.text = adapterView.getItemAtPosition(position).toString() 49 } 50 } 51 52 class FoodAdapter : BaseAdapter { 53 var foodsList = ArrayList<Food>() 54 var context: Context? = null 55 56 constructor(context: Context, foodsList: ArrayList<Food>) : super() { 57 this.context = context 58 this.foodsList = foodsList 59 } 60 61 override fun getCount(): Int { 62 return foodsList.size 63 } 64 65 override fun getItem(position: Int): Any { 66 return foodsList[position] 67 } 68 69 override fun getItemId(position: Int): Long { 70 return position.toLong() 71 } 72 73 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { 74 val food = this.foodsList[position] 75 76 var inflator = context!!.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater 77 var foodView = inflator.inflate(R.layout.food_entry, null) 78 foodView.imgFood.setImageResource(food.image!!) 79 foodView.tvName.text = food.name!! 80 81 return foodView 82 } 83 } 84}
activity_main.xml
1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 tools:context="MainActivity"> 8 9 <TextView 10 android:id="@+id/textViewTop" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:textSize="32dp" 14 android:text="TextView" /> 15 16 <GridView 17 android:id="@+id/gvFoods" 18 android:layout_width="match_parent" 19 android:layout_height="match_parent" 20 android:columnWidth="150dp" 21 android:horizontalSpacing="15dp" 22 android:numColumns="auto_fit" 23 android:verticalSpacing="15dp"> 24 25 </GridView> 26 27</LinearLayout>
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}
回答1件
あなたの回答
tips
プレビュー