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 ,