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 :

[getString] String renvoi de plusieurs champs


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut [getString] String renvoi de plusieurs champs
    Bonjour ,

    J'aurais un souci qui me bloque.
    Je vais découper en 3 parties mon explications pour que ce soit plus clair (étant donné la longueur à la relecture ..) :
    1 - Ma problématique
    2 - Mes tentatives de passages en ArrayList
    3 - Mes essayes d'adaptation sur le String


    1 - Ma problématique :

    Durant le developpement j'ai à un moment à faire une recherche qui marche très bien grace au module FTS3 de sqlite, maintenant le souci ce trouve au niveau de la réponse.

    Par exemple si je tape : Dupont , il va me renvoyer tout les Dupont (normal hein ^^).
    Le souci c'est que je n'arrive pas à lui demander plus d'information.
    il m'affichera par exemple 8 Lignes avec : DUPONT / DUPONT / DUPONT ... etc
    J'aimerais qu'il m'affiche toutes les informations : Nom / prenom / adresse / date de naissance...

    Je pense que par le code cela est plus parlant :

    Voila donc mon appel :
    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
    	public List<String> search(String query) {
    		List<String> result = new ArrayList<String>();
    		//ArrayList<Personne> result = new ArrayList<Personne>();
    		SQLiteDatabase db = getReadableDatabase();
    		final Cursor cursor = db.query(TABLE_NAME, new String[] { COLUMN_TEXT, COLUMN_NOMM , COLUMN_PRENOM },
    				COLUMN_NOMM + " LIKE ?", new String[] { query }, null, null, null);
    		if (cursor.moveToFirst()) {
    			do {
    				String text = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_TEXT));
    				result.add(text);
     
    			} while (cursor.moveToNext());
    		}
    		cursor.close();
    		return result;
    	}
    Qui va me renvoyer que le Nom (oui ici j'ai un peu déconner sur le nommage avec COLUMN_TEXT = nom ... )
    J'ai simplifier un peu le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String text = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_TEXT));
    				result.add(text);
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String text = cursor.getString(COLUMN_TEXT_ID);
    				result.add(text);
    2 - Mes tentatives de passages en ArrayList

    Et maintenant voila les test que j'ai effectuer pour essayer de passer en ArrayList mais qui me semble beaucoup plus compliquer à faire les changements ensuite sur les diverses classes :

    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
     
    ArrayList<Personne> result = new ArrayList<Personne>();
    /******************...**************/
    if (cursor.moveToFirst()) {
    			do {
    				Personne personne = new Personne();
    				personne.setNom(cursor.getString(COLUMN_TEXT_ID));
    				personne.setPrenom(cursor.getString(COLUMN_PRENOM_ID));
    				personne.setBureau(cursor.getInt(COLUMN_BUREAU_ID));
    				personne.setNom_marital(cursor.getString(COLUMN_NOMM_ID));
    				personne.setDate_naissance(cursor.getString(COLUMN_DATE_ID));
    				personne.setNumero(cursor.getInt(COLUMN_NUMERO_ID));
    				personne.setAdresse(cursor.getString(COLUMN_ADRESSE_ID));
    				personne.setCode_electeur(cursor.getInt(COLUMN_CODEEL_ID));
    				result.add(personne);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ((Personne) result).setNom(cursor.getString(COLUMN_TEXT_ID));
    				((Personne) result).setPrenom(cursor.getString(COLUMN_PRENOM_ID));
    				((Personne) result).setBureau(cursor.getInt(COLUMN_BUREAU_ID));
    				((Personne) result).setNom_marital(cursor.getString(COLUMN_NOMM_ID));
    				((Personne) result).setDate_naissance(cursor.getString(COLUMN_DATE_ID));
    				((Personne) result).setNumero(cursor.getInt(COLUMN_NUMERO_ID));
    				((Personne) result).setAdresse(cursor.getString(COLUMN_ADRESSE_ID));
    				((Personne) result).setCode_electeur(cursor.getInt(COLUMN_CODEEL_ID));
     
    				result.add(query);
    Le souci quand je déclare en ArrayList se trouve dans mon MAIN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		final EditText text = (EditText) findViewById(R.id.txt);
    		Button search = (Button) findViewById(R.id.search);
    		search.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				searchResults.clear();
    				searchResults.addAll(records.search(text.getText().toString()));
    				adapter.notifyDataSetChanged();
    			}
    		});
    Ou il me met une erreur sur le : addall(...) , me disant que le retour doit être un STRING -_- ... !

    3 - Mes essayes d'adaptation sur le String

    Du coup je me demandais si il était possible de faire une "feinte" pour faire un String comprenant toutes mes colonnes ? ou si vous avez des solutions autres , je suis preneur de toute idées.

    J'ai essayer de faire un "substring" mais cela coupe le mot : [code] String text = (cursor.getString(COLUMN_TEXT_ID).substring(COLUMN_NOMM_ID).substring(COLUMN_PRENOM_ID));

    La chose la plus correct pour l'instant que j'ai trouver est : Concat(String)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String text =  cursor.getString(COLUMN_TEXT_ID).concat(COLUMN_NOMM).concat(COLUMN_PRENOM));
    				result.add(text);
    Le seul problème c'est qu'il me link pas avec le bon NOMM , il me renvois :

    DUPONT nom_marital prenom
    Au lieu de par exemple :
    DUPONT RICHELIEU françoise

    Cordialement ,

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    Bon , me relisant et prenant un peu l'air je viens de résoudre mon problème qui viens de me paraitre clair ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String text = cursor.getString(COLUMN_TEXT_ID) + cursor.getString(COLUMN_NOMM_ID);
    result.add(text);
    Juste avec un "+"

    Donc : RÉSOLU

    Je m'excuse pour ce Topic qui avec un peu de recul et de changement de point de vue avais une réponse évidente. J'espère que mon manque de recul et de lucidité pourra en aider d'autre !

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2011
    Messages : 9
    Par défaut
    Comme quoi exposer son problème c'est le résoudre en partie!

    Saches également que si tu a beaucoup de concaténation de String, les StringBuffer sont bien plus performants!

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

Discussions similaires

  1. Renvoi de plusieurs champs dans une requête
    Par PROJECT-AURORA dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/12/2013, 14h45
  2. Réponses: 6
    Dernier message: 21/11/2009, 17h42
  3. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55
  4. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23
  5. [CR9] Plusieurs champs dans details
    Par maxxou dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 28/01/2004, 13h35

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