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