2016-12-03 20 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

相關問題