У меня есть список, подключенный к пользовательскому адаптеру массива. Этот список показывает информацию получено TCP-соединением, которое изменяет набор данных...
Я могу отсортировать список с помощью sort (Comparator super T> comparator)
, но когда набор данных изменен, список больше не сортируется...
Я могу использовать sort()
каждый раз при изменении набора данных, но я думаю, что это не лучший вариант...
Как мне это сделать? предложения?
РЕДАКТИРОВАТЬ
У меня проблемы с реализацией представленных решений...
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 )
никогда не вызывается, и мой список массивов не отсортирован...
Что я делаю неправильно?