lassificar listview com adaptador de matr
Tenho uma listview conectada a um adaptador de matriz personalizado. Esta lista mostra as informações recebidas por uma conexão TCP que altera o dataSet ...
Posso classificar a exibição de lista comsort (Comparator<? super T> comparator)
, mas quando o dataSet é alterado, a exibição da lista não é mais classificada ...
Eu posso usarsort ()
toda vez que o dataSet é alterado, mas acho que essa não é a melhor opção ...
Como eu posso fazer isso? Alguma sugestão
EDITA
Estou com problemas na implementação das soluções apresentadas ...
MyComparatorB.java
public class MyComparatorB implements Comparator<DeviceB> {
private byte orderType;
public MyComparatorB(byte type) {
this.orderType = type;
}
public int compare(DeviceB lhs, DeviceB rhs) {
int res = 0;
if (orderType == SortType.ALPHA) {
res = (lhs.getName()).compareTo(rhs.getName());
}
else if (orderType == SortType.LAST_ACT) {
res = (rhs.getTime().getTime()).compareTo(lhs.getTime().getTime());
}
return res;
}
}
Snippet do meu customArrayAdapter.java
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
//-----------Order the content of the arrayAdapter------------//
public void sort(byte sortType) {
super.sort(new MyComparatorB(sortType));
notifyDataSetChanged();
}
In my MyActivity.java
myDevAdapter.sort(SortType.ALPHA);
Quando estou depurando, o métodosuper.sort(new MyComparatorB(sortType));
é chamado e o construtor de MyComparatorB também é chamado. Mas o métodocompare(DeviceB lhs, DeviceB rhs)
nunca é chamado e meu arrayList não é classificado ... O que estou fazendo de errado?