Soutenez-nous
Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 14 sur 14
  1. #1
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 456
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 456
    Points : 2 428
    Points
    2 428

    Par défaut [Tutoriel] Créer une ListView avec des contrôles CheckBox et gérer les événements sur ces derniers

    Bonjour,

    Voici un nouveau tutoriel qui vous permettra de créer une listView avec des checkbox et de gérer les événements de ces dernières.

    http://dsilvera.developpez.com/tutor...er-evenements/

    Vous pouvez poser vos questions concernant ce tutoriel ici.

    Bonne lecture

    PS: N'oubliez pas de voter pour la discussion
    Visitez mon blog : http://easy-android.over-blog.com/

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  2. #2
    Nouveau Membre du Club
    Profil pro
    Inscrit en
    mars 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 29
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 38
    Points : 38
    Points
    38

    Par défaut list défilante

    Salut David,

    Peux-tu m'expliquer pourquoi ton tuto ne fonctionne pas si la hauteur de la liste dépasse la taille de l'écran (ce qui arrive vite) ?

    J'ai moi-même fais une appli toute simple et j'ai un problème : les checkbox changent aléatoirement au scroll.

    Si t'a la solution, merci d'avance !
    A+

  3. #3
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 456
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 456
    Points : 2 428
    Points
    2 428

    Par défaut

    Bonjour buzeeg,
    En effet, ceci n'est pas pratique. Ceci vient du fait que la position que nous renvoie getView est celle de l'item par rapport à la liste visible!

    Plusieurs solutions existent!

    La plus simple est d'afficher un objet (id, libelle) au lieu d'afficher un simple libelle. Ainsi, lorsque tu cliques sur ton item, tu seras à quel libelle cela correspond, donc à quel id qui correspond à la position. C'est une petite bidouille mais ca fonctionne!

    Sinon, il y a d'autre solution que je n'ai pas en tête la tout de suite mais je pourrais faire une mis à jour du tuto prochainement pour corriger ce bogue.
    Visitez mon blog : http://easy-android.over-blog.com/

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  4. #4
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 456
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 456
    Points : 2 428
    Points
    2 428

    Par défaut

    Bonjour à toutes et à tous,


    Je vous poste une version de code qui ne bogue pas! Comme je l'ai dit, l'astuce est d'enregistrer la position dans le tag. Voyons ceci plus précisement dans un exemple.

    Créons une classe person:
    Code :
    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
     
    // Posibilité de trier donc implemente comparable
    public class Person implements java.lang.Comparable
    {
    	// position = Position dans le tableau si nous faisons une liste de persone
    	private int		position;
    	private String	nom;
    	private String	prenom;
    	private boolean	checked	= false;
     
    	public Person (String nom, String prenom)
    	{
    		this.nom = nom.toUpperCase ();
    		this.prenom = prenom.toUpperCase ();
    	}
     
    	public String getNom ()
    	{
    		return nom;
    	}
     
    	public void setNom (String nom)
    	{
    		this.nom = nom;
    	}
     
    	public String getPrenom ()
    	{
    		return prenom;
    	}
     
    	public void setPrenom (String prenom)
    	{
    		this.prenom = prenom;
    	}
     
    	public void setChecked (boolean checked)
    	{
    		this.checked = checked;
    	}
     
    	public boolean isChecked ()
    	{
    		return checked;
    	}
     
    	public int compareTo(Object other) { 
    	      return this.nom.compareTo (((Eleve)other).getNom ());
    	}
     
    	public void setPosition (int position)
    	{
    		this.position = position;
    	}
     
    	public int getPosition ()
    	{
    		return position;
    	}
     
    }

    Ensuite, nous allons créer un adapter pour créer une liste:
    Code :
    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
     
    public class personAdapter extends BaseAdapter
    {
    	List<person>		person;
    	LayoutInflater	inflater;
     
    	public personAdapter (Context context, List<person> person)
    	{
    		inflater = LayoutInflater.from (context);
    		this.person = person;
    	}
     
    	@Override
    	public int getCount ()
    	{
    		return person.size ();
    	}
     
    	@Override
    	public Object getItem (int position)
    	{
    		return person.get (position);
    	}
     
    	@Override
    	public long getItemId (int position)
    	{
    		// TODO Auto-generated method stub
    		return position;
    	}
     
    	@Override
    	public View getView (int position, View convertView, ViewGroup parent)
    	{
    		ViewHolder holder;
    		if (convertView == null)
    		{
    			holder = new ViewHolder ();
    			convertView = inflater.inflate (R.layout.affichageitem, null);
    			holder.nom = (TextView) convertView.findViewById (R.id.nom);
    			holder.prenom = (TextView) convertView.findViewById (R.id.prenom);
    			holder.checked = (CheckBox) convertView
    					.findViewById (R.id.checkbox);
    		}
    		else
    		{
    			holder = (ViewHolder) convertView.getTag ();
    		}
    		holder.position = person.get (position).getPosition ();
    		holder.nom.setText (person.get (position).getNom ());
    		holder.prenom.setText (person.get (position).getPrenom ());
    		holder.checked.setChecked (person.get (position).isChecked ());
    		holder.checked.setClickable (false);
    		holder.checked.setEnabled (true);
    		holder.checked.setTag (holder);
    		convertView.setTag (holder);
    		return convertView;
    	}
    //Classe permettant de sauvegarder l'etat de la personne et de pouvoir recuperer la position.
    	public class ViewHolder
    	{
    		TextView	nom;
    		TextView	prenom;
    		CheckBox	checked;
    		int			position;
    	}
    }

    Enfin nous allons pouvoir initialiser et gérer notre liste dans l'activity:
    Code :
    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
     
    public class CheckActivity extends ListActivity
    {
    	/** Called when the activity is first created. */
     
    	private EditText		_filterText		= null;
    	private personAdapter	_adapter		= null;
    	private List<Person>		Person;
    	private ListView		personList;
     
    	@SuppressWarnings("unchecked")
    	@Override
    	public void onCreate (Bundle savedInstanceState)
    	{
    		super.onCreate (savedInstanceState);
    		setContentView (R.layout.main);
     
    		person = new ArrayList<person> ();
    		person.add (new person ("Toto", "Toti"));
    		person.add (new person ("Tata", "Titi"));
    		person.add (new person ("Padre", "Papa"));
    		person.add (new person ("Mum", "Maman"));
    		person.add (new person ("Aba", "ima"));
    		person.add (new person ("Mickey", "Mouse"));
    		person.add (new person ("Mini", "Mouse"));
    		person.add (new person ("Testeur", "Pro"));
    		person.add (new person ("Developpez", "Forum"));
    		person.add (new person ("Voilou", "Voili"));
     
    		Collections.sort (person);
     
    		// Initialisation de la position
    		for (int i = 0; i < person.size (); i++)
    			person.get (i).setPosition (i);
     
    		_adapter = new personAdapter (this, person);
    		setListAdapter (_adapter);
    		personList = getListView ();
    		personList.setItemsCanFocus (false);
    		personList.setOnItemClickListener (new OnItemClickListener ()
    		{
     
    			@Override
    			public void onItemClick (AdapterView<?> parentView,
    					View selectedItemView, int position, long id)
    			{
    				CheckBox c = (CheckBox) selectedItemView
    						.findViewById (R.id.checkbox);
    //On recupere le tag
    				ViewHolder view = ((ViewHolder) c.getTag ());
    //On gere le check
    				if (!c.isChecked ())
    				{
    					person.get (view.position).setChecked (true);
    				}
    				else
    				{
    					person.get (view.position).setChecked (false);
    				}
    //On replace la liste à la bonne position
    				int pos = parentView.getFirstVisiblePosition ();
    				personList.setSelection (pos);
    			}
    		});
    	}
    }
    Et voila

    Voici le xml d'un item affichageitem.xml:
    Code :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content" android:orientation="horizontal"
    	>
     
    	<ImageView 
    		android:id="@+id/img" 
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content" 
    		android:layout_gravity="center_vertical"
    		android:src="@drawable/profil_homme" android:layout_marginRight="10px"/>
     
    	<LinearLayout
    		android:layout_height="wrap_content" 
    		android:layout_gravity="center_vertical"
    		android:paddingLeft="10px" 
     
    		android:orientation="vertical" 
    		android:layout_width="wrap_content" android:layout_weight="1">
     
    		<LinearLayout
    			android:layout_height="wrap_content" 
    			android:layout_gravity="center_vertical" 
    			android:layout_width="wrap_content" 
    			android:orientation="horizontal" >
     
    			<TextView 
    				android:id="@+id/nom" 
    				android:layout_width="fill_parent"
    				android:layout_height="fill_parent" 
    				android:textSize="20sp"
    				android:textStyle="bold" 
    				android:text="Nom" 
    				android:layout_marginRight="10px"/>
     
    			<TextView 
    				android:id="@+id/prenom"
    				android:layout_width="fill_parent" 
    				android:textSize="20sp"
    				android:layout_height="fill_parent" 
    				android:text="Prenom" />
     
    		</LinearLayout>
     
    	</LinearLayout>
     
    	<CheckBox 
    		android:id="@+id/checkbox" 
    		android:layout_width="wrap_content"
    		android:layout_height="wrap_content" 
    		android:layout_weight="0" 
    		android:layout_marginRight="10px" android:layout_gravity="center_vertical"
    		android:focusable="false"
    		android:focusableInTouchMode="false" />
     
    </LinearLayout>
    Voici le main.xml:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
     
     
        <ListView android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1" 
             /> 
     
    </LinearLayout>
    Visitez mon blog : http://easy-android.over-blog.com/

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

  5. #5
    Inscrit

    Inscrit en
    février 2008
    Messages
    659
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 659
    Points : 690
    Points
    690

    Par défaut

    Parfait... sauf que ton style de code ressemble à un developpeur en C!
    Tout les classes en Java sont fortement conseillé d'avoir une lettre Majuscule comme debut!

    person, personAdapter ne respectent pas la convention de style Java...

    // Initialisation de la position
    Code :
    1
    2
    3
    4
    	for (int i = 0; i < person.size (); i++){
    			person.get (i).setPosition (i);
                      ....
    }
    Pour un mobile, il faut aussi penser à l'optimisation par :


    // Initialisation de la position
    Code :
    1
    2
    3
    4
    5
     int personLenght=person.size ();
    		for (int i = 0; i < personLenght; i++){
    			person.get (i).setPosition (i);
     
    }

  6. #6
    Invité de passage
    Homme Profil pro
    Inscrit en
    février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : février 2012
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    J'ai testé la version de base qui bug comme expliqué selon la position.
    J'ai ensuite essayé la correction proposée ici, mais les items ne se checked pas du tout. Je clique bien sur l'item, je fais un log pour voir s'il rentre bine dans la fonction
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public void onItemClick(AdapterView<?> parentView,
    					View selectedItemView, int position, long id) {
    				CheckBox c = (CheckBox) selectedItemView
    						.findViewById(R.id.checkbox);
    				// On recupere le tag
    				ViewHolder view = ((ViewHolder) c.getTag());
    				// On gere le check
    				if (!c.isChecked()) {
    					persons.get(view.position).setChecked(true);
    					Log.v("Checked", "true");
     
    				} else {
    					persons.get(view.position).setChecked(false);
    					Log.v("Checked", "false");
    				}
    les log s'affichent bien ( toujours en true) mais rien de changent sur l'interface...


    EDIT : bon en fait il suffisait de modifier un peu le code

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (!c.isChecked()) {
    					c.setChecked(true);
    					persons.get(view.position).setChecked(true);
    					Log.v("Checked", "true" + position);
     
    				} else {
    					c.setChecked(false);
    					persons.get(view.position).setChecked(false);
    					Log.v("Checked", "false" + position);
    				}
    Par contre je comprends pas trop comment ça fonctionne du coup ...
    Parce que la checkbox est récupéré par
    CheckBox c = (CheckBox) selectedItemView.findViewById(R.id.checkbox);
    et selectedItemView correspond au linearlayout j'imagine?

  7. #7
    Modérateur

    Homme Profil pro Nicolas Romantzoff
    Ingénieur systèmes et réseaux
    Inscrit en
    février 2007
    Messages
    3 605
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Romantzoff
    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 : 3 605
    Points : 5 678
    Points
    5 678

    Par défaut

    Personnellement, je préfèrerai utiliser un "CheckableLayout" comme racine des items... et laisser le ListView gérer les checked/unchecked....
    Ca permet de beneficier de tout le code de style de selection (only one, multiple, ...) et de pouvoir utiliser les styles (par exemple le background qui change quand l'item est 'checked')....
    Exemple de "CheckableLayout":
    Code :
    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
     
    public class CheckedLinearLayout extends LinearLayout implements Checkable {
     
    	boolean	checked = false;
     
    	/**
    	 * @param context
    	 * @param attrs
    	 */
    	public CheckedLinearLayout(Context context, AttributeSet attrs) {
    		super(context, attrs);
    	}
     
     
    	/**
    	 * @param context
    	 */
    	public CheckedLinearLayout(Context context) {
    		super(context);
    	}
     
     
    	@Override
    	public void setChecked(boolean c) {
    		this.checked = c;
    		refreshDrawableState();
    	}
     
    	@Override
    	public boolean isChecked() {
    		return this.checked;
    	}
     
    	@Override
    	public void toggle() {
    		this.checked = !this.checked;
    		refreshDrawableState();
    	}
     
     
        /**
         * Indicates the view is pressed. States are used with
         * {@link android.graphics.drawable.Drawable} to change the drawing of the
         * view depending on its state.
         *
         * @see android.graphics.drawable.Drawable
         * @see #getDrawableState()
         * @hide
         */
        private static final int[] CHECKED_STATE_SET = {android.R.attr.state_checked};
     
     
    	@Override 
    	protected int[] onCreateDrawableState(int extraSpace) { 
    		int neededSpace = extraSpace;
    		if (isChecked())
    			++neededSpace;
    	    int[] drawableState = super.onCreateDrawableState(neededSpace); 
    	    if (isChecked()) 
    	    	drawableState = mergeDrawableStates(drawableState, CHECKED_STATE_SET); 
    	    return drawableState; 
    	} 
    }
    Pour info, on peut rajouter un check-box dans le linear layout facilement, en déclarant ce checkbox comme héritant des "states" du parent....
    Quand le layout est "checked" la checkbox est checked.... etc...

  8. #8
    Nouveau Membre du Club
    Profil pro
    Inscrit en
    octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2006
    Messages : 129
    Points : 25
    Points
    25

    Par défaut

    Bonjour,

    J'ai vu ce post et il m'intéresse tout particulièrement, mais je n'y arrive pas ...

    La différence, c'est qu'il ne s'agit pas de liste avec des checkbox, mais d'une liste dont je veut pouvoir griser le fond de certains item selon un critère donné.

    Avant de rentrer dans un éventuel détail, je me demandais si tout bonnement c'était possible ou si il n'y avait rien à faire...

    Meurci d'avance...

  9. #9
    Modérateur

    Homme Profil pro Nicolas Romantzoff
    Ingénieur systèmes et réseaux
    Inscrit en
    février 2007
    Messages
    3 605
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Romantzoff
    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 : 3 605
    Points : 5 678
    Points
    5 678

    Par défaut

    Oui avec un CheckableLayout (cf mon post ci-dessus).

    Il suffit de mettre comme background un state-selector...

  10. #10
    Nouveau Membre du Club
    Profil pro
    Inscrit en
    octobre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2006
    Messages : 129
    Points : 25
    Points
    25

    Par défaut

    Merci, mais je suis débutante et j'avoue que je patauge sévèrement...

    Ce que je veux, ce n'est pas des items qui change de couleur à un clic donné, mais une liste qui selon un paramètre utilisateur qu'il a enregistré dans ses préférences, grise un certains nombre d'éléments dans la liste et que lorsqu'on scrolle cette liste, il ne faut pas que cela bug (ce qui est mon cas, actuellement).

    Je ne comprends pas bien ce que tu proposes. Cela veut-il donc dire qu'il ne sert à rien d'utiliser BaseAdapter?

    Merci d'avance

    [EDIT]
    Finalement, j'y suis arrivée ! Merci pour ce post !

  11. #11
    Modérateur

    Homme Profil pro Nicolas Romantzoff
    Ingénieur systèmes et réseaux
    Inscrit en
    février 2007
    Messages
    3 605
    Détails du profil
    Informations personnelles :
    Nom : Homme Nicolas Romantzoff
    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 : 3 605
    Points : 5 678
    Points
    5 678

    Par défaut

    L'adapter n'a rien à voir la dedans....
    L'adapter sert à faire l'interface entre un "widget" (le ListView) et les données, en indiquant comment représenter chaque item (Les "Layout" de chaque item).

    La ListView sait gérer tout un tas de cas: Checkable-items ou pas, multiple selection ou single selection....
    Dans tous les cas, la ListView va essayer de "caster" le layout de l'item selectionné et appeler setChecked() dessus...

    Dans le cas "classique" ou les items sont les layouts par défaut d'android (android.R.layout.checkableListItem ou un truc du genre), il sagit simplement d'un CheckedTextBox (qui implémente Checkable) => ca marche

    Dans le cas ou on "override" le layout, ce layout n'implémente pas Checkable => ca ne marche pas.

    il faut que la view initiale soit "Checkable" sinon rien ne marchera. D'ou l'idée de faire un CheckableLayout qui va conserver ce flag.
    Solution 1: Faire un truc compliqué qui va trouver les autres éléments checkables du layout => ca ne marche pas toujours.
    Solution 2: Faire un vrai CheckableLayout qui va maintenir la StateList de la view... => On peut alors faire ce qu'on veut: rajouter des éléments checkable dedans (en leur faisant hériter le state du parent), mettre un background "state-selected" (qui fait que le background change en fonction de l'état checked ou non), etc...

  12. #12
    Nouveau Membre du Club
    Inscrit en
    mars 2009
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 73
    Points : 36
    Points
    36

    Par défaut

    Bonjour,

    J'ai suivi le tuto.
    J'ai rajouté une db et les éléments de la liste sont chargés depuis la db.
    Mais je ne sais pas comment faire pour définir la valeur de checkbox.
    Quelqu'un peut d'aider?

    Merci

  13. #13
    Invité régulier
    Profil pro Clement GGG
    Inscrit en
    octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Nom : Clement GGG

    Informations forums :
    Inscription : octobre 2010
    Messages : 11
    Points : 5
    Points
    5

    Par défaut

    Même question que Snote, merci d'avance

  14. #14
    Rédacteur/Modérateur
    Avatar de David55
    Homme Profil pro David S.
    Ingénieur informatique
    Inscrit en
    août 2010
    Messages
    1 456
    Détails du profil
    Informations personnelles :
    Nom : Homme David S.
    Âge : 24
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2010
    Messages : 1 456
    Points : 2 428
    Points
    2 428

    Par défaut

    Citation Envoyé par Snote100024 Voir le message
    Bonjour,

    J'ai suivi le tuto.
    J'ai rajouté une db et les éléments de la liste sont chargés depuis la db.
    Mais je ne sais pas comment faire pour définir la valeur de checkbox.
    Quelqu'un peut d'aider?

    Merci
    La valeur de la checkbox est un boolean: true si elle est cochée, false sinon.
    Il est donc facile de la stocker dans une base de données.

    Il y a différente manière de stocker l'information. Soit on la stocke une fois cochée (donc modifiée), soit on la stocke une fois qu'on change de vue qu'elle soit cochée ou non.

    Une fois stockée, lorsque vous récupérer les informations en base, il suffit de voir si la valeur est à true et de définir la case à cocher:

    Code :
    1
    2
    3
    4
    5
     
    value = // On récupère la valeur de la base de données
    if (checkBox.isChecked()) {
          checkBox.setChecked(value);
    }
    Visitez mon blog : http://easy-android.over-blog.com/

    Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com

    Vous voulez afficher du code :
    Votre problème est résolu : pensez à cliquer sur résolu en bas de page.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •