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 :

Suppression d'item dans une ListView via des CheckBox (Type boite mail)


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Mars 2014
    Messages : 25
    Points : 26
    Points
    26
    Par défaut Suppression d'item dans une ListView via des CheckBox (Type boite mail)
    Bonjour.

    Voici mon problème.
    Dans une activité de mon application android, j'ai une listeView avec une CheckBox pour chaque item. Dans le genre :
    ====================
    TexteView CheckBox
    ====================

    Je souhaite que l'utilisateur puisse sélectionner des items en cochant la CheckBox puis les supprimer en appuyant sur le bouton du menu (HW ou SW). Exactement comme pour une boite mail, on sélectionne plusieurs message et ensuite en clique sur un bouton supprimer.

    Dans l'idée j'aimerai parcourir la liste des items et via une condition "if", gérer la suppression des items. Dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Pour (i=0 à i<Fin de la liste ; i++)
          Si (item(i).checkbox=true)
                Supprimer item
          Fin si
    Fin pour
    Dans l'algo c'est simple. Mais étant débutant en JAVA (J'ai appris la POO en C++), le codage s'avère plus fastidieux.
    Ce que je n'arrive pas a faire c'est faire correspondre la CheckBox à l'item correspondant, ou du moins parcourir ma liste avec un curseur (ici i).

    Voici ma classe correspondant a mon activité. En bas se trouve une seconde classe pour la gestion du menu, c'est à l’intérieur de celle-ci que j'aimerai implémenter ma fonction.

    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
     
    public class ticketDeleteActivity extends Activity {
     
     
     
    	//===================Création du Menu (Appui sur le bouton)=======================
    	private Menu m = null;
     
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    	  super.onCreateOptionsMenu(menu);
     
    	  MenuInflater inflater = getMenuInflater();
    	  //R.menu.menu est l'id de notre menu
    	  inflater.inflate(R.menu.menu_delete, menu);
    	  m = menu;
    	  return true;
    	}
     
     
    	//===================Affichage de la liste des tickets==========================
        public final static String ITEM_TITLE = "title";  
        public final static String ITEM_CAPTION1 = "caption";  
        public final static String ITEM_CAPTION2 = "caption"; 
     
        public Map<String,?> createItem(String title, String caption1) {  
            Map<String,String> item = new HashMap<String,String>();  
            item.put(ITEM_TITLE, title);  
            item.put(ITEM_CAPTION1, caption1); 
            return item;  
        } 
     
     
    	ListView listView ;
    	int incTicket;
     
     
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.ticket_consultation);
     
    		//Creation d'une instance de la classe TicketBDD
    		TicketBDD ticketBDD = new TicketBDD(ticketDeleteActivity.this);
     
    		//Déclaration de la variable security pour l'affichage des tickets
    		List<Map<String,?>> security = new LinkedList<Map<String,?>>(); 
     
    		//Ouverture de la BDD
    		ticketBDD.open();
     
    		for(incTicket=1;incTicket<500;incTicket++){
     
    			//Récupération du ticket en foncrtion du nom
    			Ticket ticketFromBdd = ticketBDD.getTicketWithId(incTicket);
     
    			if(ticketFromBdd != null){
    				//Récupération en variable des différents paramètres du ticket (ID, nom, description)
    				String idProject = ticketFromBdd.getIdProject();
    				String idTicket = ticketFromBdd.getidTickettType();
    				String name = ticketFromBdd.getName();
    				String description = ticketFromBdd.getDescription();
     
     
    	        	//Affichage des tickets
    	        	security.add(createItem("TICKET N°"+incTicket, "ID Ticket : "+String.valueOf(idTicket)+ "\nN° Projet : "+String.valueOf(idProject)+ "\nNom : " +name+ "\nDescription : " +description));  
    			}
    		}
     
     
            // create our list and custom adapter  
            SeparatedListAdapter adapter = new SeparatedListAdapter(this);  
            //adapter.addSection("Array test", new ArrayAdapter<String>(this,  
              //  R.layout.list_item, new String[] { "First item", "Item two" }));  
            adapter.addSection("Liste des tickets", new SimpleAdapter(this, security, R.layout.list_complex_with_checkbox,   
                new String[] { ITEM_TITLE, ITEM_CAPTION1 }, new int[] { R.id.list_complex_title, R.id.list_complex_caption1 }));  
     
            ListView list = new ListView(this); 
            list.setAdapter(adapter);  
            this.setContentView(list);  
     
    		//Fermeture de la BDD
    		ticketBDD.close();
     
     
    	}
    	//===========================Suppression des tickets============================
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
        	int i;
     
     
     
    		//Creation d'une instance de la classe TicketBDD
    		TicketBDD ticketBDD = new TicketBDD(ticketDeleteActivity.this);
     
    		//Ouverture de la BDD
    		ticketBDD.open();
     
            switch (item.getItemId()) {
            case R.id.bouton_menu_delete:
     
            	for(i=1;i<10;i++){
     
            		CheckBox cb = (CheckBox)findViewById(R.id.checkbox_ticket);
     
            		if (cb.isChecked()){
     
                    	Toast.makeText(getApplicationContext(),
           	                 "cb selected : ", Toast.LENGTH_LONG)
           	                 .show();
            		}
            	}
     
     
     
            	Toast.makeText(getApplicationContext(),
    	                 "Tickets supprimés ", Toast.LENGTH_LONG)
    	                 .show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }
    }


    Si besoin voici mon adaptateur. Je l'ai trouvé sur internet puis je l'ai adapté, mais je ne connais pas le rôle précis de toute ses méthodes. J'ai lu qu'il était utilisé pour l'affichage et donc ne serais pas adapté à mon cas de situation.

    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
    106
    107
     
     
    public class SeparatedListAdapter extends BaseAdapter {  
     
        public final Map<String,Adapter> sections = new LinkedHashMap<String,Adapter>();  
        public final ArrayAdapter<String> headers;  
        public final static int TYPE_SECTION_HEADER = 0;  
     
     
        public SeparatedListAdapter(Context context) {  
            headers = new ArrayAdapter<String>(context, R.layout.list_header);  
        }  
     
        public void addSection(String section, Adapter adapter) {  
            this.headers.add(section);  
            this.sections.put(section, adapter);  
        }  
     
        public Object getItem(int position) {  
            for(Object section : this.sections.keySet()) {  
                Adapter adapter = sections.get(section);  
                int size = adapter.getCount() + 1;  
     
                // check if position inside this section   
                if(position == 0) return section;  
                if(position < size) return adapter.getItem(position - 1);  
     
                // otherwise jump into next section  
                position -= size;  
            }  
            return null;  
        }  
     
        public int getCount() {  
            // total together all sections, plus one for each section header  
            int total = 0;  
            for(Adapter adapter : this.sections.values())  
                total += adapter.getCount() + 1;  
            return total;  
        }  
     
        public int getViewTypeCount() {  
            // assume that headers count as one, then total all sections  
            int total = 1;  
            for(Adapter adapter : this.sections.values())  
                total += adapter.getViewTypeCount();  
            return total;  
        }  
     
        public int getItemViewType(int position) {  
            int type = 1;  
            for(Object section : this.sections.keySet()) {  
                Adapter adapter = sections.get(section);  
                int size = adapter.getCount() + 1;  
     
                // check if position inside this section   
                if(position == 0) return TYPE_SECTION_HEADER;  
                if(position < size) return type + adapter.getItemViewType(position - 1);  
     
                // otherwise jump into next section  
                position -= size;  
                type += adapter.getViewTypeCount();  
            }  
            return -1;  
        }  
     
        public boolean areAllItemsSelectable() {  
            return false;  
        }  
     
        public boolean isEnabled(int position) {  
            return (getItemViewType(position) != TYPE_SECTION_HEADER);  
        }  
     
     
        static class ViewHolder {
            protected TextView text;
            protected CheckBox checkbox;
          }
     
     
        @Override  
        public View getView(int position, View convertView, ViewGroup parent) {  
            int sectionnum = 0;  
            for(Object section : this.sections.keySet()) {  
                Adapter adapter = sections.get(section);  
                int size = adapter.getCount() + 1;  
     
                // check if position inside this section   
                if(position == 0) return headers.getView(sectionnum, convertView, parent);  
                if(position < size) return adapter.getView(position - 1, convertView, parent);  
     
                // otherwise jump into next section  
                position -= size;  
                sectionnum++;  
     
     
            }  
            return null;  
        }  
     
        @Override  
        public long getItemId(int position) {  
            return position;  
        }  
     
    }
    Au final, j'arrive juste a vérifier que la première CB est cochée ou non. Comment puis-je faire pour parcourir ma liste ?

    J'ai pourtant fait des recherches sur internet, mais je n'ai pas trouvé de situation ou la suppression se fait via un bouton dans le menu.
    Je vous remercie d'avance pour votre aide.

  2. #2
    Membre régulier
    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 : 46
    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
    Points : 78
    Points
    78
    Par défaut
    tu peux developper des idees par cet exempl

    http://theopentutorials.com/post/unc...onbarsherlock/

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Mars 2014
    Messages : 25
    Points : 26
    Points
    26
    Par défaut
    Merci, je vais regarder ça.

Discussions similaires

  1. Supprimer des items dans une LISTVIEW
    Par thisisonehood dans le forum VB.NET
    Réponses: 7
    Dernier message: 05/06/2012, 14h46
  2. suppression d'items dans une CheckedListBox
    Par inforlab dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/12/2008, 11h57
  3. [VB.NET] Suppression d'un item dans une listview
    Par Remedy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/07/2006, 16h00
  4. [C#] Suppression d'un item dans une listview
    Par Popof dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/04/2006, 13h58
  5. Suppression d'item dans une arborescence
    Par jonzuzu dans le forum MFC
    Réponses: 2
    Dernier message: 24/02/2004, 17h45

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