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 :

afficher ligne contenant 2 TextView et un TableLayout d'image


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    541
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 541
    Points : 124
    Points
    124
    Par défaut afficher ligne contenant 2 TextView et un TableLayout d'image
    Bonjour,

    J'affiche une Listview dont lequel il y a sur chaque ligne 2 TextView et N image.

    J'ai pensé à créer un tableLeyout afin de mettre mes N Images quadrillé sur 3 colonnes mais cela me donne cette erreur:


    05-17 09:42:41.707: E/AndroidRuntime(11960): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.



    Comment résoudre ce problème? Voici mon code:


    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
     
     
    @Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		View v = convertView;
    		if (v == null) {
    			LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
    					Context.LAYOUT_INFLATER_SERVICE);
    			v = vi.inflate(R.layout.listrow, null);
    		}
     
    		ListeArret o = getItem(position);
    		if (o != null) {
    			TextView tt = (TextView) v.findViewById(R.id.station);
    			if (tt != null) {
    				tt.setText(o.getLibelle());
    			}
    			TextView bb = (TextView) v.findViewById(R.id.distance);
    			if (bb != null) {
    				Log.v("", "getDistance:" + o.getDistance());
    				bb.setText(o.getDistance());
    			}
    			// ImageView image=(ImageView)v.findViewById(R.id.numeroligne);
    			TableLayout table = (TableLayout)v.findViewById(R.id.TableLayout01);
     
    			LinearLayout layout = (LinearLayout) v
    			.findViewById(R.id.monlayout);			
    			int count=0;
    			for (int i = 0; i < o.getLignes().size(); i++) {
    				TableRow row = new TableRow(getContext());
    				if(count==3){
     
    				row = new TableRow(getContext());
    				count=0;
    				}
    				ImageView image = new ImageView(getContext());
    				int resid = getContext().getResources().getIdentifier(
    						"ligne_"
    								+ o.getLignes().get(i).getNumLigne()
    										.toLowerCase(), "drawable",
    						"com.test.base");
    				image.setImageResource(resid);
    				row.addView(image, new TableRow.LayoutParams(25, 25));
    				table.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     
    				count++;
    			}
    			layout.addView(table,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
     
     
     
    		}

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Ce que je n'arrives pas à comprendre , c'est que la fonction GetView te permet de pouvoir soit créer tes views soit de les modifier.

    Là dans ton code tu ne fais que la créer :/.

    Tu testes bien si ta view est null au début pour pouvoir l'initialiser mais à aucun moment tu prends en comptes que cette view est déjà rempli.

    De ce fait quand tu fais tes AddView à la fin ben tu rajoutes des View dans des Views, et là ben le code .

    Si tu veux t'amuser à recréer chaque fois tes view il faut les nettoyer avant avec un RemoteView ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Tout d'abord, il faut détruire tous les éléments contenus dans le layout. 
     
    LinearLayout layoutOfDynamicContent = ( LinearLayout ) findViewById(R.id. layoutOfDynamicContent ); 
     
    layoutOfDynamicContent .removeAllViewsInLayout();
    Je te renvoie à ce tutoriel :
    http://mathias-seguy.developpez.com/...ihm-dynamique/

    Sinon tu peux faire confiance à ce que tu as déjà fait auparavant .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/10/2006, 09h17
  2. copier une ligne contenant un mot
    Par newbiedelphi dans le forum Delphi
    Réponses: 2
    Dernier message: 25/07/2006, 11h02
  3. Réponses: 5
    Dernier message: 24/06/2006, 17h30
  4. Réponses: 7
    Dernier message: 23/04/2006, 23h07
  5. [VBA-E] Afficher lignes masquées dans une feuille protégée
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/12/2005, 18h59

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