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

相关问题