У меня есть список, подключенный к адаптеру массива. В этом списке показана информация, полученная TCP-соединением, которое изменяет набор данных ...
Я могу отсортировать представление списка с помощью sort (Comparator<? super T> comparator)
, но при изменении набора данных просмотр списка больше не сортируется ...
Я могу использовать sort ()
каждый раз, когда изменяется набор данных, но я думаю, что это не лучший вариант ...
Как я могу это сделать? Есть предложения?
EDIT
У меня проблемы с реализацией представленных решений ...
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;
}
}
Фрагмент моего 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();
}
В моем MyActivity.java
myDevAdapter.sort(SortType.ALPHA);
Когда я отлаживаю, вызывается метод super.sort(new MyComparatorB(sortType));
и конструктор MyComparatorB тоже. Но метод compare(DeviceB lhs, DeviceB rhs)
никогда не вызывается и мой arrayList не сортируется ...
Что я делаю не так?