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 :

Accès variables d'une classe via tableau => modification de la technique via liste


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut Accès variables d'une classe via tableau => modification de la technique via liste
    Bonjour,

    Je suis occupé de finaliser une partie de mon code mais je suis tombé sur un os...
    J'ai une classe ChiffreArray qui contient des variables servant à stocker des données.
    J'aimerais pouvoir accéder à celles-ci sous forme de tableau.

    Mais je ne vois pas comment m'y prendre :s

    Donc voilà ma classe ChiffreArray:

    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
    package rapport.presse.cim;
     
    import android.widget.TextView;
     
    public class ChiffreArray {
    	String mDataNum = "";
    	String mDataTirage = "";
    	String mDataDiffTot = "";
    	String mDataDiffPay = "";
    	String mDataVind = "";
    	String mDataAbPrint = "";
    	String mDataAbGroup = "";
    	String mDataVNumP = "";
    	String mDataVTiers = "";
    	String mDataAd = "";
    	String mDataNonAd = "";
    	String mDataAff = "";
    	String mDataAutreDiffM = "";
    	String mDataAdBis = "";
    	String mDataNonAdBis = "";
    	String mDataPush = "";
    	String mDataPull = "";
    	String mDataPullBis;
    	String mDataDisPub = "";
    	String mDataDiffD = "";
     
    }
    Et ici la classe asynchrone servant placer ces valeurs dans mes 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
    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
    package rapport.presse.cim;
     
    import java.io.InputStream;
     
    import android.os.AsyncTask;
    import android.widget.TextView;
     
    public class AsyncDownloadTab extends AsyncTask<String, Integer, ChiffreArray>{
     
    	private InputStream mInputStream;
    	private HttpConnexionTab mHttpConnexionTab = new HttpConnexionTab();
     
    	public ChiffreArray mChiffres = new ChiffreArray();
    	private TextView[] mTextViewMap;
    	private int cpt;
    	public String[] mDataTab =  {"mDataNum",  "mDataTirage", "mDataDiffTot", "mDataDiffPay", "mDataVind","mDataAbPrint", "mDataAbGroup", "mDataVNumP", "mDataVTiers", "mDataAd", "mDataNonAd", 
    			"mDataAff", "mDataAutreDiffM", "mDataAdBis", "mDataNonAdBis", "mDataPush", "mDataPull", "mDataPullBis", "mDataDisPub", "mDataDiffD"};
     
    	public AsyncDownloadTab(ChiffreArray mChiffres, TextView[] textViewMap, int cpt){
    		this.mChiffres = mChiffres;
    		this.mTextViewMap = textViewMap;
    		this.cpt = cpt;
    	}
    	@Override
    	protected ChiffreArray doInBackground(String... params) {
    		// TODO Auto-generated method stub
    		String url = params[0];
    		String key1= params[1];
    		String choix = params[2];
    		String key2 = params[3];
    		String date = params[4];
    		mInputStream = mHttpConnexionTab.getConnexionHttp(url, key1, choix, key2, date );
    		String res = mHttpConnexionTab.convertToString(mInputStream);
    		return mChiffres;
    	}
     
    	@Override
    	protected void onPostExecute(ChiffreArray result) {
    		super.onPostExecute(result);
    		if (mChiffres != null){	
     
    			for(int i = cpt; i < cpt+20; i++){
    				for (int j = 0; j < mDataTab.length; j++){
    					String mData = mDataTab[i];
    					mTextViewMap[i].setText(mChiffres.mData);
    				}
     
    			}
     
    			/**mDataTirage1.setText(mChiffresCol1.mDataTirage);
                            mDataDiffTot1.setText(mChiffresCol1.mDataDiffTot);
                            mDataDiffPay1.setText(mChiffresCol1.mDataDiffPay);
                            mDataVind1.setText(mChiffresCol1.mDataVind);
                            mDataAbPrint1.setText(mChiffresCol1.mDataAbPrint);
                            mDataAbGroup1.setText(mChiffresCol1.mDataAbGroup);
                            mDataVNumP1.setText(mChiffresCol1.mDataVNumP);
                            mDataVTiers1.setText(mChiffresCol1.mDataVTiers);
                            mDataAd1.setText(mChiffresCol1.mDataAd);
                            mDataNonAd1.setText(mChiffresCol1.mDataNonAd);
                            mDataAff1.setText(mChiffresCol1.mDataAff);
                            mDataAutreDiffM1.setText(mChiffresCol1.mDataAutreDiffM);
                            mDataAdBis1.setText(mChiffresCol1.mDataAdBis);
                            mDataNonAdBis1.setText(mChiffresCol1.mDataNonAdBis);
                            mDataPush1.setText(mChiffresCol1.mDataPush);
                            mDataPull1.setText(mChiffresCol1.mDataPull);
                            mDataPullBis1.setText(mChiffresCol1.mDataPullBis);
                            mDataDisPub1.setText(mChiffresCol1.mDataDisPub);
                            mDataDiffD1.setText(mChiffresCol1.mDataDiffD);
                    }
                    else {
                            mDataNbNum1.setText("-");
                            mDataTirage1.setText("-");
                            mDataDiffTot1.setText("-");
                            mDataDiffPay1.setText("-");
                            mDataVind1.setText("-");
                            mDataAbPrint1.setText("-");
                            mDataAbGroup1.setText("-");
                            mDataVNumP1.setText("-");
                            mDataVTiers1.setText("-");
                            mDataAd1.setText("-");
                            mDataNonAd1.setText("-");
                            mDataAff1.setText("-");
                            mDataAutreDiffM1.setText("-");
                            mDataAdBis1.setText("-");
                            mDataNonAdBis1.setText("-");
                            mDataPush1.setText("-");
                            mDataPull1.setText("-");
                            mDataPullBis1.setText("-");
                            mDataDisPub1.setText("-");
                            mDataDiffD1.setText("-");
                    }**/
    	}}
     
    }
    En fait j'aimerais éviter toute la partie en commentaire pour ne fonctionner qu'avec une ligne dans une boucle.
    Qlq serait m'aider? (la ligne 45)

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Pas besoin de .setText avec des variables de classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mDataDiffPay = "ma valeur";
    c'est déjà plus lisible.

    Ensuite tu peux passer par un constructeur (mais ici tu as trop de variables).

    Tu peux également définir une énumération et l'employer pour initialiser tes variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public enum CHIFFRE_ENUM
    {
    DATA_NUM = 0,
    DATA_PAY = 1
    ...
    }

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    Le setTex c'est pour mettre dans le textView approprié ^^

  4. #4
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Ok elles portent le même nom

    L'utilité d'une énumération, c'est de pouvoir travailler facilement avec des valeurs (position), en les nommant.

    Au lieu de travailler avec la valeur 1, tu travailleras avec la valeur DATA_PAY.

    Quand on travaille sur des tableaux c'est plus parlant que 5, 9...

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 137
    Par défaut
    J'ai pensé faire une énumération mais si je fonctionne en faisait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    enum mDataId{
    		mDataNum(mChiffres.mDataNum);
    	}
    Bah il me dit "Cannot make a static reference to the non-static field mChiffres"

  6. #6
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Tu devras passer par une méthode dans ChiffreArray.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public void setParam(final CHIFFRE_ENUM chiffre_enum, final String val)
    {
       if (chiffre_enum == CHIFFRE_ENUM.DATA_PAY) 
       {
             this.mDataPay = val;
             return;
       } 
     
       //A compléter pour les autres enum.
       //...
    }
    Rem: je me demande si on ne fait pas fausse route, je suis un peu perdu

    Je te donne l'idée de l'enum, à toi de voir si c'est utilisable dans ton cas.

  7. #7
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Citation Envoyé par vangoeth Voir le message
    J'ai pensé faire une énumération mais si je fonctionne en faisait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    enum mDataId{
    		mDataNum(mChiffres.mDataNum);
    	}
    Bah il me dit "Cannot make a static reference to the non-static field mChiffres"
    Ca ne marchera jamais un code pareil.

    Tu dois instancier la variable qui recevra l'enum et donner l'accès (Public...).Ici avec des parenthèses, il n'acceptera pas.

    Va voir dans mon SetParam comment instancier l'enum

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

Discussions similaires

  1. [PHP 5.3] Accés variable d'une classe
    Par Général03 dans le forum Langage
    Réponses: 6
    Dernier message: 19/08/2011, 09h25
  2. ASP.net / c# acces a une variable dans une classe
    Par Angellus dans le forum ASP.NET
    Réponses: 11
    Dernier message: 29/04/2010, 15h18
  3. Réponses: 3
    Dernier message: 02/11/2005, 18h03
  4. [FLASH MX2004] [AS2] Accès aux variables d'une classe
    Par stailer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/07/2005, 12h58
  5. Variable d'une Classe Ancêtre
    Par Génie dans le forum Langage
    Réponses: 3
    Dernier message: 18/09/2002, 19h24

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