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 :

GridView : Récupérer une vue en fonction de la position


Sujet :

Android

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut GridView : Récupérer une vue en fonction de la position
    Bonjour à tous,

    J'affiche un calendrier mensuel à l'aide d'une gridview. Lorsque je clic sur une case du gridview (chaque case est un textview) je change le background et la couleur du textview pour montrer la date sélectionnée.

    Le problème étant que je ne sais pas comment repasser la date précédemment sélectionné en état normal lorsque je choisie une nouvelle date.

    Le getView de mon 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
     
    public View getView(int position, View convertView, ViewGroup parent) 
    {
    	if(convertView == null) {
    		convertView = inflater.inflate(R.layout.calendrier_case, null);
    	}
     
    	final TextView textview = (TextView) convertView.findViewById(R.id.case_cal);
    	textview.setGravity(Gravity.CENTER);
    	textview.setText(this.items.get(position));
     
    	//Récupération de la date en fonction de la case cliqué
    	int[] date = this.calendar.getDateFromPos(position);
     
    	if(position <= 6) // Jour de la semaine
    		textview.setTextColor(R.color.bleu_nuit);
    	else
    	{
    		textview.setTextColor(Color.rgb(44, 54, 66));
    	}
     
    	if(date != null)
    	{
    		textview.setHeight(this.metrics.widthPixels /7); // Permet d'avoir des cases carré
    		if(date[1] != this.calendar.getMonth())
    		{
    			textview.setBackgroundColor(Color.rgb(175, 174, 177));
    			textview.setTextColor(Color.rgb(117, 122, 126));
     
    			textview.setOnClickListener(this.onClicOtherDate(position,date));
    		}
    		else
    		{
    			textview.setBackgroundColor(Color.rgb(218, 217, 223));
    			textview.setOnClickListener(this.onClicThisMonthDate(position));
    		}
     
    		if(this.calendar.isToday(date))
    			textview.setTextColor(Color.rgb(245, 45, 12));
    	}
    	else
    	{
    		//Ligne des jours
    		textview.setBackgroundColor(Color.rgb(202,202,207));
    		textview.setHeight(30);
    	}
     
    	return convertView;
    }
    Les événements attachés à chaque textview :
    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
     
    protected OnClickListener onClicThisMonthDate(final int position)
    	{
    		return new OnClickListener() {
     
    			@Override
    			public void onClick(View v) 
    			{
    				prevDateSelected = position;
    				TextView casecal = (TextView) v.findViewById(R.id.case_cal);
    				casecal.setBackgroundColor(Color.rgb(93, 94, 94));
    				casecal.setTextColor(Color.WHITE);
    			}
    		};
    	}
     
    	protected abstract OnClickListener onClicOtherDate(int position,final int[] date);
    Dans onClicThisMonthDate() je sauvegarde la position de la date cliquée , il me suffirait donc de pouvoir récupérer la vue associée à une position pour pouvoir agir sur le textview concerné.
    Comment puis je faire ?

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    J'ai fini par trouver.

    On peut retourner n'importe quel vue d'un gridView en fonction de sa position avec GridView.getChildAt(position)
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/06/2009, 20h06
  2. Réponses: 3
    Dernier message: 22/03/2008, 11h48
  3. [Struts] - Charger une vue en fonction du navigateur ?
    Par Tigrou35 dans le forum Struts 1
    Réponses: 1
    Dernier message: 07/08/2007, 11h58
  4. Réponses: 4
    Dernier message: 01/08/2007, 15h35
  5. Réponses: 5
    Dernier message: 20/06/2007, 15h21

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