J'essaie de faire apparaître une boîte d'alerte qui demande à l'utilisateur s'il souhaite supprimer une valeur d'un ArrayList qui s'affiche dans un ListView chaque fois qu'il tente de faire un clic long sur l'un d'eux
mainListView.setLongClickable(true)
mainListView.setOnItemLongClickListener(object: AdapterView.OnItemLongClickListener {
override fun onItemLongClick(parent: AdapterView<*>, view: View, position:Int, id:Long) {
val alertDialog = AlertDialog.Builder(this@listV)
alertDialog.setTitle("Would you like to delete this ?")
alertDialog.setPositiveButton("Yes") { dialog, whichButton -> mobileArray.removeAt(position);listAdapter.notifyDataSetChanged() }
alertDialog.setNegativeButton("Cancel", { dialog, which -> })
alertDialog.create()
alertDialog.show()}})
mais il y a une erreur sur la fonction OnItemLongClick qui est
le type de retour est 'unit' qui n'est pas un sous-type d'
amusement abstrait public remplacé onItemLongClick (...) : booléen défini dans android.widget.adapterView.OnItemLongClickListener
Je suis très confus car j'ai utilisé à peu près le même code pour un simple "onItemClick" et cela a bien fonctionné
Les signatures de onItemClick
et onItemLongClick
diffèrent (ce qui, accordé, est une étrange incohérence dans l'API) :
void onItemClick(AdapterView<?> parent, View view, int position, long id)
boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
Ce dernier renvoie une boolean
valeur indiquant si l'événement a été consommé par l'écouteur. Si c'est le cas true
, les autres auditeurs ne seront pas appelés pour cet événement.
Donc ce que vous voulez faire est quelque chose comme ceci :
override fun onItemLongClick(parent: AdapterView<*>, view: View, position: Int, id: Long): Boolean {
// alert dialog code
return true
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots