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

Android Discussion :

Forcer une expandableListView à se redessiner


Sujet :

Android

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Forcer une expandableListView à se redessiner
    Bonjour,
    j'ai une expandablelisView avec pour chaque group une checkbox et chaque child une checkbox également.

    Lors du check d'un group toutes les checkbox du child sont checkés automatiquement. Je n'ai aucun probléme pour que l'état des checkboxs soit mis à jour.

    Par contre j'aimerai forcer l'expandableListView à se redessiner lors de ce changement...et je n'ai aucune idée de comment procéder.

    Voici les extraits de code produits (qui seront sans doute plus parlant) :


    ici je gére le onclick du group :

    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
     
    	public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
     
    		GroupViewHolder gholder;
    		final TypeVehicule type=(TypeVehicule) getGroup(groupPosition);
    		if (convertView==null)
    		{
    			gholder=new GroupViewHolder();
    			convertView = inflater.inflate(R.layout.listevehicule_type,null);
    			gholder.textViewGroup=(TextView)convertView.findViewById(R.id.LV_textType);
    			gholder.checkType=(CheckBox)convertView.findViewById(R.id.LV_CheckType);
    			gholder.checkType.setTag(groupPosition);		
    			gholder.imgType=(ImageView)convertView.findViewById(R.id.LV_ImageType);
    			convertView.setTag(gholder);
    		}
    		else
    		{
    			gholder = (GroupViewHolder)convertView.getTag();
    		}
    		gholder.textViewGroup.setText(type.getType());
    			if (type.getColor()==-1)
    			{ 
    				int color;
    				Random rnd = new Random(); 
    				color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
    				type.setColor(color);		
    			}	
    		    gholder.imgType.setBackgroundColor(type.getColor());
    		    gholder.checkType.setChecked(type.isIschecked());	  
    		    gholder.checkType.setOnClickListener(new OnClickListener() {
     
    				@Override
    				public void onClick(View v) 
    				{					
    					type.setIschecked(((CheckBox) v).isChecked());
     
    						for (Vehicule _v : type.getListeVehicules())
    						{
    							_v.setIschecked(type.isIschecked());
    						}
     
    				}			
    			});
     
    		    gholder.checkType.setChecked(type.isIschecked());
    		// ici je voudrais dire a l'Expandable listView de se redessiner.  
    		return convertView;
    	}
    et le code du onCreate de l'activty Concernée :

    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
     
    protected void onCreate(Bundle savedInstanceState) 
    	{
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(net.ornicar.ornimobile.R.layout.listevehicule);
    		listView_Vehic = (ExpandableListView)findViewById(R.id.ListeVehicules);		
    		// ici pour l'instant on rempli en dur en attendant l'implementation de la couche metier..		
    		for (int i=1; i<10;i++)
    		{
    			TypeVehicule type = new TypeVehicule("Type " + i);
     
    			ArrayList<Vehicule> oListVeh = new ArrayList<Vehicule>();
     
    			for (int j=0;j<10;j++)
    			{
    				oListVeh.add(new Vehicule(type, "Veh N°"+j+"-"+i));
    			}
    			type.setListVehicule(oListVeh);
    			oListType .add(type);			
    		}
    		ListeVehiculesAdapter adapter = new ListeVehiculesAdapter(this, oListType,true);
    		listView_Vehic.setAdapter(adapter);
    		this.registerForContextMenu(listView_Vehic);
    		listView_Vehic.setOnChildClickListener(new  OnChildClickListener() {
     
    			@Override
    			public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {	
    				Toast.makeText(getApplicationContext(), oListType.get(groupPosition).getListeVehicules().get(childPosition).getNom()+" Clicked!!", 4000).show();	
    				return true;
    			}
    		});
     
    	}
    Merci d'avance si l'un d'entre vous peut m'aiguiller...

  2. #2
    Candidat au Club
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    je me répond moi même étant donné que j'ai trouvé la solution.

    il suffit simplement d'appeler la methode notifyDataSetChanged() au bonne endroit (à savoir dans le onClick qui gére la checkbox du groupe) :

    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
     
       gholder.checkType.setOnClickListener(new OnClickListener() {
     
    				@Override
    				public void onClick(View v) 
    				{					
    					type.setIschecked(((CheckBox) v).isChecked());
     
    						for (Vehicule _v : type.getListeVehicules())
    						{
    							_v.setIschecked(type.isIschecked());
     
    						}
    						notifyDataSetChanged();
    				}					
    			});

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Forcer une saisie numérique
    Par Empty_body dans le forum Langage
    Réponses: 9
    Dernier message: 04/10/2011, 18h46
  2. forcer une police speciale sur un site internet
    Par nico_web dans le forum Autres langages pour le Web
    Réponses: 5
    Dernier message: 24/02/2011, 00h24
  3. Forcer une page à s'ouvrir avec Internet Explorer
    Par alexbubs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/10/2005, 10h32
  4. Forcer une deconnexion
    Par Fl0r3nt dans le forum Administration système
    Réponses: 7
    Dernier message: 10/06/2005, 16h30
  5. forcer une fenetre à etre au premier plan jusqu'a ...
    Par peppena dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/12/2003, 16h14

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