IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Problème id à supprimer dans ListView


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Par défaut Problème id à supprimer dans ListView
    Bonsoir à tous,

    Je travaille en ce moment sur une listeView contenant des boutons qui suppriment des valeurs d'une base de donnée.
    J'en suis ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    package com.example.app;
     
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageButton;
    import android.widget.TextView;
    import android.widget.Toast;
     
    import java.util.List;
    import java.util.Map;
     
    /**
     * Created by user pc on 30/01/14.
     */
    public class PretAdapte extends BaseAdapter {
     
        List<? extends Map<String, ?>> data ;
        LayoutInflater inflater ;
        Integer key ;
        final Context context ;
     
        public PretAdapte(Context context, List<? extends Map<String, ?>> data, Integer key) {
            inflater = LayoutInflater.from(context) ;
            this.data = data ;
            this.key = key ;
            this.context = context ;
        }
     
        /**
         * retourne le nombre d'éléments de la listview
         */
        @Override
        public int getCount() {
            return data.size() ;
        }
     
        /**
         * retourne l'item de la listview à un index précis
         */
        @Override
        public Object getItem(int index) {
            return data.get(index) ;
        }
     
        /**
         * retourne l'index de l'élément actuel
         */
        @Override
        public long getItemId(int index) {
            return index;
        }
     
        /**
         * structure contenant les éléments d'une ligne
         */
        private class ViewHolder {
            TextView obj ;
            TextView pers ;
            TextView num ;
            ImageButton btnDeleteHF;
        }
     
        /**
         * Affichage dans la liste
         */
        @Override
        public View getView(int index, View convertView, ViewGroup parent) {
            final ViewHolder holder ;
            if (convertView == null) {
                holder = new ViewHolder() ;
                convertView = inflater.inflate(R.layout.lignelistviewpret, null) ;
                holder.obj = (TextView)convertView.findViewById(R.id.leNomObjet) ;
                holder.pers = (TextView)convertView.findViewById(R.id.leNomPersonne) ;
                holder.num = (TextView)convertView.findViewById(R.id.leNumPersonne) ;
                holder.btnDeleteHF = (ImageButton)convertView.findViewById(R.id.imageButtonSupprimer);
                convertView.setTag(holder) ;
            }else{
                holder = (ViewHolder)convertView.getTag();
            }
            holder.obj.setText((String)this.data.get(index).get("leNomObjet"));
            holder.pers.setText((String)this.data.get(index).get("leNomPersonne"));
            holder.num.setText((String)this.data.get(index).get("leNumPersonne")) ;
            holder.btnDeleteHF.setTag(Integer.parseInt(this.data.get(index).get("identifiant").toString()));
            holder.btnDeleteHF.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
     
                        int position = (Integer)v.getTag();
                        data.remove(position);
                        PretBDD unPretBdd = new PretBDD(context);
                        unPretBdd.open();
                        unPretBdd.removePret(position);
                        unPretBdd.close();
                        notifyDataSetChanged();
     
                }
     
            });
            return convertView ;
        }
     
    }
    Le truc c'est que je voudrais récupérer à la fois l'ID de la ligne à supprimer de la listView et l'ID de la ligne dans la base de données dans le OnClickListener du bouton.

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Pourquoi passer une Map alors ?

    Conserve les objets (et leurs IDs) sous une vraie forme java typée (POJO)...

    Autre question... pourquoi hériter de BaseAdapter et non de ArrayAdapter par exemple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class PretData
    {
     
        private long    id;
        private String  object;
        // devrait être un "contact" histoire de bénéficier des avantages du téléphone
        private String  personne;
        private String  num;  
     
        public void setId(long id) { this.id = id; }
        public long getId() { return this.id; }
     
        public void setObject(String obj) { this.object = obj; }
        public long getObject() { return this.obj; }
     
        ...
    }
    Ensuite le code de l'adapter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    class PretAdapter extends ArrayAdapter<PretData> {
    {
        public PretAdapter(Context context, List<PretData> objects)
        {
             super(context,R.layout....,objects);
        }
     
        @Override
        public long getItemId(int index) {
            return getItem(index).getId();
        }
     
        // le onClickListener est invariable et réentrant, il n'a donc pas interêt à être instancé pour chaque bouton, il peut global à l'adapter.
        View.OnClickListener  deleteHandler = new View.OnClickListener() {
               public void onClick(View v) {
                        Integer index = (Integer)v.getTag();
                        PretData item = PretAdapter.this.getItem(index.intValue());
     
                        PretBDD unPretBdd = new PretBDD(context);
                        unPretBdd.open();
                        unPretBdd.removePret(item.getId());
                        unPretBdd.close();
     
                        PretAdapter.this.remove(item);
                        notifyDataSetChanged();
     
                }
         }
     
        @Override
        public View getView(int index, View convertView, ViewGroup parent) {
            View result = super.getView(index,convertView,parent);
     
            PretData item = getItem(index);
     
            ViewHolder holder = (ViewHolder)result.getTag();
            if (holder == null) {
                holder = new ViewHolder() ;
                holder.obj = (TextView)result.findViewById(R.id.leNomObjet) ;
                holder.pers = (TextView)result.findViewById(R.id.leNomPersonne) ;
                holder.num = (TextView)result.findViewById(R.id.leNumPersonne) ;
                holder.btnDeleteHF = (ImageButton)result.findViewById(R.id.imageButtonSupprimer);
                holder.btnDeleteHF.setOnClickListener(deleteHandler);
                result.setTag(holder) ;
            }
     
            holder.obj.setText(item.getObject());
            holder.pers.setText(item.getNomPersonne());
            holder.num.setText(item.getNumPersonne()) ;
            holder.btnDeleteHF.setTag(Integer.valueOf(index));
     
            return result ;
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Norvège

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut Multiple Row Item Deleted from Listview Android

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 22
    Par défaut
    Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/04/2015, 17h30
  2. Problème avec SetAdapter dans ListView
    Par monta007 dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 04/10/2012, 13h39
  3. Problème affichage données dans listview
    Par Alixe80 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 13/05/2008, 20h42
  4. problème de lignes supprimées dans une JTable
    Par AnjouWeb dans le forum Composants
    Réponses: 2
    Dernier message: 22/06/2007, 12h59
  5. [C#] Supprimer dans une listView
    Par thomfort dans le forum Windows Forms
    Réponses: 13
    Dernier message: 03/10/2006, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo