Сортировка списка с помощью адаптера массива
У меня есть список, подключенный к адаптеру пользовательских массивов. Этот список показывает информацию, полученную TCP-соединением, которое изменяет dataSet ...
Я могу отсортировать список с помощьюsort (Comparator<? super T> comparator)
, но при изменении dataSet список больше не сортируется ...
я могу использовать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)
никогда не вызывается и мой arrayList не сортируется ... Что я делаю не так?