2016-12-03 3 views
0

У меня есть метод сортировки, но это не позволяет мне вызвать метод обновления.Как я могу вызвать функцию ПОСЛЕ завершения моей коллекции Collections.sort?

Я получаю сообщение об ошибке: Попытка завершить событие ввода, но приемник входного события уже размещенный

Вот мой метод

private void sort(final String field){ 
    Log.d(TAG, "Sorting on " + field); 

    if(GACommuter.rideMatches != null) { 

     Collections.sort(GACommuter.rideMatches, new Comparator<Ride>() { 

      @Override 
      public int compare(Ride ride1, Ride ride2) { 
       switch (field) { 
        case "home": 
         return ride1.getDistanceFromHome().compareTo(ride2.getDistanceFromHome()); 
        default: 
         return ride1.getDistanceFromWork().compareTo(ride2.getDistanceFromWork()); 
       } 
      } 
     }); 
    } 
    refreshListView(); 
} 

Мой метод refreshListView просто обновляет видимые элементы в моем ListView ,

+1

Пожалуйста, измените вопрос и разместить весь стек Java след, связанный с грохотом. Кроме того, где вы вызываете 'sort()'? – CommonsWare

+0

Здесь отображается полная ошибка, включая трассировку стека. Отправьте код, который вызывает это. Ваш код для обновления после сортировки в порядке, ваша проблема заключается в чем-то другом. –

+0

Возможно, вы столкнулись с сбором мусора, все ли создано правильно? – Illdapt

ответ

0

Я думаю, вы вызываете сортировку, когда нажимается элемент просмотра списка, поэтому происходит столкновение.

Что вы можете рассмотреть использует PostDelayed вместо того, чтобы просто позвонив refreshListView:

listView.postDelayed(new Runnable() { 
    public void run() { refreshListView(); } 
}, 100); 
+0

Отличное предложение. Я попробую. – dawoodman71