MainActivity.kt Fichier - C'est l'activité principale.
Comment ajouter un MainAlacivity.kt strong> p> onitemClickListener () code> dans GridView implémentée à l'aide d'un adaptateur personnalisé (Ici, j'ai nommé
CatégorieAdapter code> )? J'aime l'ajouter à définir cliquez sur l'auditeur dans l'image. P>
package com.hari.rideit.Adapters
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.ImageView
import android.widget.TextView
import com.hari.rideit.R
import com.hari.rideit.model.Category
class CategoryAdapter(context:Context,categories:List<Category>):BaseAdapter(){
val context= context
val categories= categories
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val categoryView: View
categoryView = LayoutInflater.from(context).inflate(R.layout.category_layout, null)
val categoryImage: ImageView = categoryView.findViewById(R.id.categoryImage)
val categoryname: TextView = categoryView.findViewById(R.id.categoryText)
val category = categories[position]
categoryname.text = category.title
val resourceId =
context.resources.getIdentifier(category.image, "drawable", context.packageName)
categoryImage.setImageResource(resourceId)
return categoryView
}
override fun getItem(position: Int): Any {
return categories[position]
}
override fun getItemId(position: Int): Long {
return 0
}
override fun getCount(): Int {
return categories.count()
}
}
3 Réponses :
Vous pouvez ajouter OnClickListener à chaque élément de la grille. Avant de retourner la catégorieview, définissez OnClickListener sur elle.
class MainActivity : AppCompatActivity() , NavigationView.OnNavigationItemSelectedListener, CategoryAdapter .OnItemClickListener { //rest of the code override fun onClick(position:Int){ // perform the code. } }
Mais de cette manière, comment puis-je savoir quelle image est cliquée?
Sur quelle ligne il montre l'erreur? L'écoute.onClick doit être identique que défini dans l'interface.
Que passer quand j'initialise l'adaptateur? Adaptateur = CatégorieAdapter (Ceci, DataService.Catégories)
Passez ceci à l'adaptateur: adaptateur = CatégorieAdapter (Ceci, DataService.Catégories, this) Code>.
Avez-vous ajouté la catégorieAdapter .onitemClickListener à votre MainActivity.kt Like Classe MainActivity: AppCompatiactivité (), NavigationView.onnAvateSitemselectedlistener, CatégorieAndapter .nonitemClickListener { Code>
Vous devez modifier votre constructeur d'adaptateur sur: et appelez-le de votre activité comme ceci: p> à l'intérieur de votre adaptateur , Ajoutez ce code après "CatégorieImage.setimageresource (WeatherID)": P> categoryImage.setOnClickListener {
listener.onClick(categoryImage)
}
Toast.maketext (contexte, "cliquez sur", toast.longueur_long) .Show () le contexte montre le rouge est-il égal à ceci
Et comment savoir quelle image est cliquée?
Vous devez utiliser le contexte de votre activité: Toast.Maketext (this @ MainAlactivité, "Cliquez sur" Toast.Length_long) .Show ()
Pour connaître la position de votre vue, vous pouvez créer un auditeur personnalisé comme cette interface CustomClickListener {Fun Onclick (position: int)}
converview.setonclicklistener () {} p>
Bonjour Hari, bienvenue à la Stackoverflow Communicy. Assurez-vous de lire le Stackoverflow.com/help/how-to-ask . En outre, lorsque vous souhaitez ajouter du contenu à propos de votre question, Edit i> Votre question plutôt que de poster une réponse dans un forum comme style.