Aller au contenu

[Résolu] Optimisation


Nhi

Recommended Posts

Bonjour 


Je recherche actuellement une solution pour optimiser mon programme qui consiste à afficher une question avec 4 réponses possibles.


Cependant la question est choisis aléatoirement parmi une liste de 500 questions.


J'ai donc crée une variable aléatoire entre 1 et 500:


numero_question = (int) (Math.random() * 500 + 1); 


et selon le numéro je récupère la question avec ses 4 réponses possibles :


if(numero_question == 1)


{


q = res.getString(R.string.q1);


a = res.getString(R.string.a1);


b = res.getString(R.string.b1);


c = res.getString(R.string.c1);


d = res.getString(R.string.d1);


}


if(numero_question == 2)


{


q = res.getString(R.string.q2);


a = res.getString(R.string.a2);


b = res.getString(R.string.b2);


c = res.getString(R.string.c2);


d = res.getString(R.string.d2);


}


Le problème est que je dois répéter ce code 500 fois pour chaque question c'est a dire environ 4000 lignes de codes.


Ma question est donc y a t-il un moyen pour remplacer R.string.q1 , R.string.q2 ...etc


par R.string.qX  


avec X prenant la valeur de numero_question


ainsi il suffirait d'écrire :


numero_question = (int) (Math.random() * 500 + 1); 


X = numero_question;


 q = res.getString(R.string.qX);


 a = res.getString(R.string.aX);


 b = res.getString(R.string.bX);


 c = res.getString(R.string.cX);


 d = res.getString(R.string.dX);


En espérant avoir été le plus clair possible.


Merci par avance pour vos réponses.


 


Lien vers le commentaire
Partager sur d’autres sites

Et bien j'avais déja essayer de mettre ("q" + X) dans une chaine de caractere S 

Mais le probleme est que la fonction res.getString(R.string.S) ne marche pas car elle ne reconnait pas la variable S, elle va rechercher une phrase qui s'appele S et pas qX

Lien vers le commentaire
Partager sur d’autres sites

En effet la base de données parait être une bonne solution. 

Cependant je dois également faire une traduction en anglais ce qui est assez facile en utilisant le fichier strings.

Si j'utilise une base de données il faudrait alors stocker les 2 traductions dans 2 base de données différentes.

Il faudrait alors une fonction en java pour connaitre la langue dans laquelle l'application est utilisé pour pouvoir utiliser la bonne base de données.

Une telle fonction existe t-elle ? 

Lien vers le commentaire
Partager sur d’autres sites

la j'ai pas de quoi te répondre mais oui il y a cette fonction....

Sinon pourquoi ne pas mettre dans ta bdd les colonnes: Id / Francais / Anglais, enfin tu vois le genre ^^

Et selon la langue actuel prendre telle ou telle colonne.... certes via xml c'est bien plus rapide le choix de la langue...

 

 

------------------------------------------------------------------------------------------------------------------------------------

edit:

bref j'ai une autre solution  qui prend en charge le xml...

Dans ton xml au lieu de faire que des items fait du genre:

<resources>
<string-array name="Question1"> // name of the string array
<item>Rep1</item> // items
<item>Rep2</item>
<item>Rep3</item>
<item>Rep4</item>
</string-array>
</resources>

exemple pour une question et tu recuperer comme ca:

String[] question1 = getResources().getStringArray(R.array.Question1);

Voila j'espère que cela t'aidera ;) 

Lien vers le commentaire
Partager sur d’autres sites

Solution intéressante mais je pense qu'elle prendra encore un peu trop de place.

J'ai trouvé une autre solution qui permet de résumé les 4000 lignes en une 10aine de lignes :

 

String id_question = "q" + numero_question2;
int q2 = res.getIdentifier(id_question, "string", "package");
final String q = getResources().getString(q2);
Lien vers le commentaire
Partager sur d’autres sites

C'est une bonne solution aussi.

Mais actuellement cette partie du code fait 15 lignes comparé au 5000 lignes que j'avais je suis assez satisfait.  :)

De plus le texte dans le fichier string s'adapte automatiquement à la langue ce qui évite du code supplémentaire.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...