Tri ListView dans ListFragment
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 :
Code:
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) {
}
});
} |
Dans le listfragment :
Code:
1 2 3
| public void sort(SortType type){
adapter.sort(new MonComparator(type));
} |
mon comparator :
Code:
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;
}
} |
mon adapter :
Code:
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));
}
} |
Et enfin l'énumeration :
Code:
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...