Bonjour,

J'ai une listview, remplie par un simpleCursor dans lequel je voudrais ajouter des catégories de date par rapport aux éléments.

Voici le code

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
public void DataBind() throws ParseException{
    	Cursor c = db.recupererInfoBC();
    	startManagingCursor(c);
    	SimpleCursorAdapter adapter = new SimpleCursorAdapter(this.getBaseContext(), R.layout.recup_listinfobc, c,
    	new String[]{"numero_bc", "heure_depart", "ville_depart", "heure_arrivee", "ville_arrivee", "destination", "nb_pers_prev", "nb_pers_prev", "nb_pers_prev", "date_dep"},
    	new int[]{R.id.textNumeroBC, R.id.textHeureDepart, R.id.textVilleDepart, R.id.textHeureRetour, R.id.textVilleRetour, R.id.textDestination, R.id.textNbPersPrev, R.id.OptionColor, R.id.OptionColor2, R.id.date} );
 
    	adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
    		public boolean setViewValue(View view, Cursor cursor, int columnIndex){
    		    if (view.getId() == R.id.OptionColor) {
 
    		        final String colorIR = cursor.getString(cursor.getColumnIndex("is_read"));
    		        final String colorIO = cursor.getString(cursor.getColumnIndex("is_ok"));
 
    		        if(colorIR.equals("null") && colorIO.equals("null"))
    		        {
    		        	((View) view.getParent()).setBackgroundColor(android.graphics.Color.WHITE);
    		        }
    		        else if(!(colorIR.equals("null")) && colorIO.equals("null"))
    		        {
    		        	((View) view.getParent()).setBackgroundColor(android.graphics.Color.parseColor("#F99DA6"));
    		        }
    		        else if(!(colorIR.equals("null")) && !(colorIO.equals("null")))
    		        {
    		        	((View) view.getParent()).setBackgroundColor(android.graphics.Color.parseColor("#A4F7A4"));
    		        }
    		       	return true;
    		    }
    		    if (view.getId() == R.id.OptionColor2) {
    		    	String dateprec;
    		    	String datecour = cursor.getString(cursor.getColumnIndex("date_dep"));
    		    	if(cursor.isFirst())
    		    	{
    		    		dateprec = "NULL";
    		    	}
    		    	else
    		    	{
    		    		cursor.moveToPrevious();
    		    		dateprec = cursor.getString(cursor.getColumnIndex("date_dep"));
    		    	}
 
    		    	if(datecour.equals(dateprec))
    		    	{
    		    		((View) view.getParent()).setVisibility(8);
    		    	}
    		    }
    		    return false;
    		}
    	});
 
    	listview.setAdapter(adapter);
    	listview.setOnItemClickListener(this);
    }
Dans la méthode setViewValue je change tout d'abord la couleur de fond des élément suivant une valeur dans chaque ligne du cursor. Cela fonctionne bien.
Mais dans la seconde partie de la méthode je créer des catégorie de date en mettant a GONE ou pas une partie de l'élément a savoir un layout au dessus en guise de titre si jamais la date précédente est égale à la date courante.

J'ai 7 élément, dont les dates sont 21, 22, 23, 24 et 25

Il me manque une catégorie... Cela m'affiche :

-----21 Mai-----
élément
élément
-----22 Mai-----
élément
élément => Problème celui ci est du 23, en comparant avec la date précédente le layout n'aurait pas du passer a GONE...
-----24 Mai-----
élément
élément
-----25 Mai-----
élément

De plus si je clique sur un élément et que je reviens sur ma vue juste après, cette fois j'ai bien la catégorie du 23 mais la première et la dernière disparaisse...

Un vrai casse tête...