Tengo una vista de lista conectada a un adaptador de matriz personalizado. Esta lista muestra información recibida por una conexión TCP que cambia el conjunto de datos ...Sort listview with array adapter
soy capaz de ordenar la vista de lista con sort (Comparator<? super T> comparator)
, pero cuando se cambia el conjunto de datos, la vista de lista no es más ordenados ...
Puedo usar sort()
cada vez que se cambia el dataSet, pero creo que esta no es la mejor opción ...
¿Cómo puedo hacer eso? ¿Alguna sugerencia?
EDITAR
estoy teniendo problemas en la aplicación de las soluciones presentadas ...
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;
}
}
de fragmentos de mi 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();
}
En mi MyActivity.java
myDevAdapter.sort(SortType.ALPHA);
Cuando estoy depuración, el método se llama super.sort(new MyComparatorB(sortType));
y el constructor de MyComparatorB se llama también. Pero el método compare(DeviceB lhs, DeviceB rhs)
nunca se llama y mi arrayList no está ordenada ... ¿Qué estoy haciendo mal?
por qué no utiliza ArrayList y ordena la matriz y restaura la lista de arreglos. – Behnam
Creo que debería ordenar su matriz y llamar a adapter.notifyDataSetChanged() –
@amp: ¿Qué es SortType aquí? – YuDroid