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 :
Qui va me renvoyer que le Nom (oui ici j'ai un peu déconner sur le nommage avec COLUMN_TEXT = nom ... )
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; }
J'ai simplifier un peu le :
en :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String text = cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_TEXT)); result.add(text);
2 - Mes tentatives de passages en ArrayList
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String text = cursor.getString(COLUMN_TEXT_ID); result.add(text);
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); }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
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);
Ou il me met une erreur sur le : addall(...) , me disant que le retour doit être un STRING -_- ... !
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(); } });
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)
Le seul problème c'est qu'il me link pas avec le bon NOMM , il me renvois :
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);
Au lieu de par exemple :DUPONT nom_marital prenom
DUPONT RICHELIEU françoise
Cordialement ,
Partager