From 55e7feceedfe019ff272ae29cf4ae42d117606b7 Mon Sep 17 00:00:00 2001 From: Pierre FERREIRA Date: Sat, 18 Mar 2023 11:44:34 +0100 Subject: [PATCH] :zap: mise en place de la gridView cliquable, pb : voir viewbinding --- app/build.gradle | 5 ++ .../android/pierrepierre/MoleGridActivity.kt | 43 +++++++-- .../iut/android/pierrepierre/MyGridAdapter.kt | 82 +++++------------- app/src/main/res/drawable/Limule.png | Bin 0 -> 1728 bytes app/src/main/res/layout/moleitem.xml | 38 ++++---- 5 files changed, 83 insertions(+), 85 deletions(-) create mode 100755 app/src/main/res/drawable/Limule.png diff --git a/app/build.gradle b/app/build.gradle index 01f6c5e..2d4d60f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,6 +23,11 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + + buildFeatures { + viewBinding true + } + compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 diff --git a/app/src/main/java/iut/android/pierrepierre/MoleGridActivity.kt b/app/src/main/java/iut/android/pierrepierre/MoleGridActivity.kt index 7c2a6d0..3bad2e8 100644 --- a/app/src/main/java/iut/android/pierrepierre/MoleGridActivity.kt +++ b/app/src/main/java/iut/android/pierrepierre/MoleGridActivity.kt @@ -1,16 +1,43 @@ package iut.android.pierrepierre import android.os.Bundle -import android.os.PersistableBundle -import android.widget.GridView +import android.widget.AdapterView.OnItemClickListener +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity -class MoleGridActivity(var Moles : List) : AppCompatActivity(){ +class MoleGridActivity : AppCompatActivity() { + ///https://developer.android.com/topic/libraries/view-binding#kotlin + //var binding: ActivityMainBinding? = null + private lateinit var binding : MoleGridBinding - - override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { - super.onCreate(savedInstanceState, persistentState) - setContentView(R.layout.mole_grid) - findViewById(R.id.MoleGrid).adapter = MyGridAdapter(context = this, Moles) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = MoleGridBinding.inflate(layoutInflater) + setContentView(binding.getRoot()) + val MoleName = arrayOf( + "Mole1", "Mole2", "Mole3", "Mole4", + "Mole5", "Mole6", "Mole7", "Mole8", "Mole9", "Mole10" + ) + val flowerImages = intArrayOf( + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule, + R.drawable.Limule + ) + val gridAdapter = MyGridAdapter(this@MoleGridActivity, MoleName, flowerImages) + binding.gridView.setAdapter(gridAdapter) + binding.gridView.setOnItemClickListener(OnItemClickListener { parent, view, position, id -> + Toast.makeText( + this@MoleGridActivity, + "You Clicked on " + MoleName[position], + Toast.LENGTH_SHORT + ).show() + }) } } \ No newline at end of file diff --git a/app/src/main/java/iut/android/pierrepierre/MyGridAdapter.kt b/app/src/main/java/iut/android/pierrepierre/MyGridAdapter.kt index 70ea5a2..0cd990a 100644 --- a/app/src/main/java/iut/android/pierrepierre/MyGridAdapter.kt +++ b/app/src/main/java/iut/android/pierrepierre/MyGridAdapter.kt @@ -1,78 +1,40 @@ package iut.android.pierrepierre import android.content.Context -import android.database.DataSetObserver +import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.ArrayAdapter -import android.widget.ListAdapter -import androidx.recyclerview.widget.RecyclerView.Adapter +import android.widget.BaseAdapter +import android.widget.ImageView +import android.widget.TextView -class MyGridAdapter(context : Context, private var Moles : List) : ListAdapter{ - override fun registerDataSetObserver(observer: DataSetObserver?) { - TODO("Not yet implemented") - } - - override fun unregisterDataSetObserver(observer: DataSetObserver?) { - TODO("Not yet implemented") - } -// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Mole { -// //return MoleView(LayoutInflater.from(parent.Context).inflate(R.layout.mole_grid)) -// return Mole(false) -// } -// -// override fun onBindViewHolder(holder: Mole, position: Int) { -// TODO("Not yet implemented") -// } -// -// override fun getItemCount(): Int { -// TODO("Not yet implemented") -// } +class MyGridAdapter(var context: Context, var MoleName: Array, var image: IntArray) : + BaseAdapter() { + var inflater: LayoutInflater? = null override fun getCount(): Int { - return Moles.size + return MoleName.size } - override fun getItem(position: Int): Any { - return Moles[position] + override fun getItem(position: Int): Any? { + return null } override fun getItemId(position: Int): Long { - TODO("Not yet implemented") - } - - override fun hasStableIds(): Boolean { - TODO("Not yet implemented") - } - - override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { - TODO("Not yet implemented") - } - - override fun getItemViewType(position: Int): Int { - TODO("Not yet implemented") + return 0 } - override fun getViewTypeCount(): Int { - TODO("Not yet implemented") - } - - override fun isEmpty(): Boolean { - return Moles.isEmpty() - } - - override fun areAllItemsEnabled(): Boolean { - for (i in Moles){ - if (i.isDead()){ - return false - } + override fun getView(position: Int, convertView: View, parent: ViewGroup): View { + var convertView = convertView + if (inflater == null) inflater = + context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + if (convertView == null) { + convertView = inflater!!.inflate(R.layout.mole_grid, null) } - return true + val imageView = convertView.findViewById(R.id.grid_image) + val textView = convertView.findViewById(R.id.item_name) + imageView.setImageResource(image[position]) + textView.text = MoleName[position] + return convertView } - - override fun isEnabled(position: Int): Boolean { - return !Moles[position].isDead() - } - - } \ No newline at end of file diff --git a/app/src/main/res/drawable/Limule.png b/app/src/main/res/drawable/Limule.png new file mode 100755 index 0000000000000000000000000000000000000000..2cf59f24317e94acb6a89c2f5ef28d50724afce2 GIT binary patch literal 1728 zcmeAS@N?(olHy`uVBq!ia0y~yV4MNM9Be?5dh0KtK#H+A$lZxy-8q?;3=C{lo-U3d z6?5L+-Iyg4F2S1My`Ifv*oSJv=lw?m(!QV^*nNlcU}huJAhk zW{%7~4>%-S6uqbD71ib&PJVsUc(ZnGeEH0~S54DOe^~A^{{D^;XxYdBYxZqjY0jW~ zZQlOOs=wFHrET0dt9EbXle(zfw>e_>cdov9ecAW>bM{5Os8h(SeZ|XAV9hDPpv1z% zAZR5qE$Z%0n>%;)u8BXN?mPF?=Ij3L`B@F$-Q{P+{Vyor{i82#PQ2LlQX?H>VW4^@ zwgwJHW``EOHqWnfvtL>tH!5Ae$*w+N&Hvj!HeL9BeeT(7k2g);`75T($W)d$*ytdG zfMNnehkyZt%Zmhws~3uO*UmkCdv5Q!*X)}spMTw@JoDDgkDkxJy4$}Mx&Lzizd52n zt9nkd0Ig_XRB$@LAh57man;u1$dcoiUOhc7FaE1Cd9}6FTpl!|BUXgIj`{T><-zZn zQ0q8=KCGKj#e64k^|hTkv+bYF-JbS(Yx$1&HRt>MU-4f#ER@^?u>s`33kMB6YTu=1 zr*DpkKfBMY_TH7brx%^y%kwtilKuaGWk2`Ke*NnI<((3321q{oAzd-+&e!T*-@7Yy zZvDJnezfYbXXW}$Kh?i$Jw|cIoaV#{3+JA`@ylxZ?Q0vq+_bF-Tyy^ZzT)*pV#iRt zni%rca(eU4J;kj#AO&HGfzPUa-y^hTxpnlB696=JV3BLV?tJC>cZFhd>bf8@^ zS-aWw-EMJ~PvnHA8jvQSLSP!RUO!)UZb@AJ+l+TovfQW7pohZe_+M7jHb369cxC+k za=m5mG?u+nX?vG`^Pla7qo`_EUY+ZG_vDpVev9Jz?t4lE3(H{z0H4o((j}7qxbjgBunkrm?8U; zuMHG}BCp$b-#%(}_vDvSgW73-WzK*i^5^o%!oSbHgw_S$ky3+N1`0LKyi(eXl-Fy7kmr{+|clq`j`wm~99&Z)DzBthb)ji%z*Droq zT)%tI^qXIwPG4%LarxH5FBdm%@If+rWR#N#UmDEHpAeC0Fw1Mp6Of>%tDnm{r-UW| DO3W;k literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/moleitem.xml b/app/src/main/res/layout/moleitem.xml index 80e8411..32b5cb9 100644 --- a/app/src/main/res/layout/moleitem.xml +++ b/app/src/main/res/layout/moleitem.xml @@ -1,20 +1,24 @@ - + - - - - + - \ No newline at end of file + + + + \ No newline at end of file