Bonsoir ,
J'ai crée un spinner qui permet de choisir le type de tri de la listview contenue dans un listfragment .
Cependant lorsque je choisis un tri , la listview ne change pas... Je ne comprends pas pourquoi .
voici mon code :
Pour mon spinner :
Dans le listfragment :
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 public void addListenerOnButton() { spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(adapterView.getContext(), "OnItemClickListener : " + adapterView.getItemAtPosition(i).toString(), Toast.LENGTH_SHORT).show(); switch (i) { case 0: listFragment.sort(SortType.AlphaTitre); break; case 1: listFragment.sort(SortType.AlphaDesc); break; case 2: listFragment.sort(SortType.Importance); break; case 3: listFragment.sort(SortType.DateCreation); break; case 4: listFragment.sort(SortType.DateAlarme); break; } } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); }
mon comparator :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public void sort(SortType type){ adapter.sort(new MonComparator(type)); }
mon adapter :
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 package com.hascoet.ubo_blocnote; import java.util.Comparator; /** * Created by Hascoet Kevin on 04/11/14. */ public class MonComparator implements Comparator<Note> { private SortType orderType; public MonComparator(SortType type) { this.orderType=type; } @Override public int compare(Note note, Note note2) { int res=0; if(orderType == SortType.AlphaTitre){ res = (note.getTitre()).compareTo(note2.getTitre()); }else if(orderType==SortType.AlphaDesc){ res=(note.getDescription()).compareTo(note.getDescription()); } else if(orderType==SortType.DateCreation){ res = (note.getDateCreation()).compareTo(note2.getDateCreation()); }else if(orderType==SortType.DateAlarme){ res = (note.getDate()).compareTo(note2.getDate()); }else if(orderType==SortType.Importance){ res=((Integer)note.getImportance()).compareTo((Integer)note2.getImportance()); } return res; } }
Et enfin l'énumeration :
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 package com.hascoet.ubo_blocnote; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.Comparator; import java.util.List; /** * Created by atlas on 30/10/14. */ public class MonListeAdapter extends ArrayAdapter<Note> { private Integer[] images={ R.drawable.priorite_low, R.drawable.priorite_medium, R.drawable.priorite_high }; private List<Note> notes; private Context context; public MonListeAdapter(Context context,List<Note> values){ super(context,0); this.context=context; this.notes=values; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowview = inflater.inflate(R.layout.listlayout,parent,false); TextView titre = (TextView)rowview.findViewById(R.id.titre); TextView desc = (TextView)rowview.findViewById(R.id.description); TextView alarme = (TextView)rowview.findViewById(R.id.alarmeText); ImageView img = (ImageView)rowview.findViewById(R.id.img); Note n=notes.get(position); if(n.getDate()!=null) { alarme.setText("Alarme :"+n.afficheDate()); } titre.setText(n.getTitre()); desc.setText(n.getDescription()); img.setImageResource(images[notes.get(position).getImportance()-1]); return rowview; } public void remove(Note note) { for(Note n : notes){ if(n.getDescription().equals(note.getDescription())){ notes.remove(n); } } } @Override public void sort(Comparator comparator) { super.sort(comparator); notifyDataSetChanged(); } @Override public int getCount() { return notes.size(); } @Override public Note getItem(int position) { return notes.get(position); } @Override public long getItemId(int position) { return notes.indexOf(getItem(position)); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public enum SortType { AlphaTitre, AlphaDesc, DateAlarme, DateCreation, Importance }
Merci d'avance pour votre aide , je bloque vraiment...
Partager