Android kotlin
Fermé
baptiste
-
31 août 2022 à 02:03
BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 - 1 sept. 2022 à 09:25
BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 - 1 sept. 2022 à 09:25
A voir également:
- Android kotlin
- Android - Guide
- Android recovery - Guide
- Jouer a pokemon sur android - Guide
- Voir mot de passe wifi android - Guide
- Mode sécurisé android - Guide
2 réponses
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
31 août 2022 à 08:40
31 août 2022 à 08:40
Hello,
Le mot-clé as te permet d'effectuer un smart cast. En Java, on aurait écrit ceci
AdapterView.ContextMenuInfo info = (AdapterView.ContextMenuInfo) item.menuInfo
j'aimerai comprendre comment je rcupere la position d'un element avec ca
homeActivity.kt :
package com.example.firstapp import android.annotation.SuppressLint import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.ContextMenu import android.view.Menu import android.view.MenuItem import android.view.View import android.widget.* class HomeActivity : AppCompatActivity() { var postsArray = ArrayList<Post>() lateinit var listPosts: ListView lateinit var adapter : PostsAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) val email = intent.getStringExtra("email") //venir chercher le id du container listView dans activity_home listPosts = findViewById(R.id.listPost) postsArray = arrayListOf( Post("post 1","une description qui va etre afficher ici au lieu de ce texte qui ne veut rien dire",R.drawable.ic_launcher), Post("post 2","une description qui va etre afficher ici au lieu de ce texte qui ne veut rien dire",R.drawable.ic_launcher), Post("post 3","une description qui va etre afficher ici au lieu de ce texte qui ne veut rien dire",R.drawable.ic_launcher), Post("post 4","une description qui va etre afficher ici au lieu de ce texte qui ne veut rien dire",R.drawable.ic_launcher), Post("post 5","une description qui va etre afficher ici au lieu de ce texte qui ne veut rien dire",R.drawable.ic_launcher) ) adapter = PostsAdapter(this, R.layout.item_post,postsArray) listPosts.adapter = adapter listPosts.setOnItemClickListener { adapterView, view, position, id -> val clickedPost = postsArray[position] val intentToDetailActivity = Intent(this,PostDetailsActivity::class.java) intentToDetailActivity.putExtra("post",clickedPost.titre) startActivity(intentToDetailActivity) } // si on reste appuyer sur une un itemPost registerForContextMenu(listPosts) } //menu en haut a droite override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.home_menu,menu) return super.onCreateOptionsMenu(menu) } //item en haut a droite override fun onOptionsItemSelected(item: MenuItem): Boolean { if(item.itemId == R.id.itemAdd){ Toast.makeText(this, "add new item", Toast.LENGTH_SHORT).show() }else if (item.itemId == R.id.itemConfig){ Toast.makeText(this, "settings", Toast.LENGTH_SHORT).show() }else if (item.itemId == R.id.itemLogout){ finish() } return super.onOptionsItemSelected(item) } //creer un menu quelqu'on que override fun onCreateContextMenu( menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo? ) { menuInflater.inflate(R.menu.list_context_menu,menu) super.onCreateContextMenu(menu, v, menuInfo) } //item qui apparait quand on reste appuyer override fun onContextItemSelected(item: MenuItem): Boolean { val info : AdapterView.AdapterContextMenuInfo = item.menuInfo as AdapterView.AdapterContextMenuInfo val position : Int = info.position if(item.itemId == R.id.itemShow) { Intent(this,PostDetailsActivity::class.java).also { it.putExtra("titre",postsArray[position].titre) startActivity(it) } }else if(item.itemId == R.id.itemDelete){ postsArray.removeAt(position) adapter.notifyDataSetChanged() } return super.onContextItemSelected(item) } PostsAdapter.kt
package com.example.firstapp import android.annotation.SuppressLint import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.ImageView import android.widget.TextView class PostsAdapter(/*ou on veut afficher le xml*/ var mContext: Context,/* le xml qu'on veut afficher*/ var resource : Int,/* la liste info qu'on va afficher*/ var values :ArrayList<Post>): ArrayAdapter<Post>(mContext,resource,values){ override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { //position d'un element ex: titre ,description,image voir post val post = values[position] val itemView = LayoutInflater.from(mContext).inflate(resource,parent,false) val tvTitre = itemView.findViewById<TextView>(R.id.tvTitre) val tvDescription = itemView.findViewById<TextView>(R.id.tvDescription) val imagePost = itemView.findViewById<ImageView>(R.id.imagePost) tvTitre.text = post.titre tvDescription.text = post.description imagePost.setImageResource(post.image) return itemView } }
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
31 août 2022 à 16:30
31 août 2022 à 16:30
C'est dans AdapterView.AdapterContextMenuInfo qu'est fait le traitement. Mais, très certainement, c'est juste la position dans le tableau
baptiste
>
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
31 août 2022 à 19:48
31 août 2022 à 19:48
j'ai pas compris a quoi sert le smart cast
BunoCS
Messages postés
15495
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
23 octobre 2024
3 909
>
baptiste
1 sept. 2022 à 09:25
1 sept. 2022 à 09:25
31 août 2022 à 12:31
Super merci mais comment fait t’il pour récupérer la position
31 août 2022 à 14:25
La position est un champ de l'objet ContextMenuInfo. Le code ne montre pas comment est créé ce menu, il faut regarder du côté de l'Adapter
31 août 2022 à 14:31
Je peux vous montrer ?
31 août 2022 à 14:51
Si tu veux, mais quel ton objectif exactement ?