2016-12-03 17 views
0

ソート方法がありますが、リフレッシュ方法を呼び出すことができません。Collections.sortの完了後に関数を呼び出すにはどうすればよいですか?

私はエラーを取得する:入力イベントを終了しようとしましたが、入力イベント受信機はすでにここ

に配置された私の方法は、私のrefreshListView方法は、単に私のリストビューに表示項目を更新

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(); 
} 

です。

+1

あなたの質問を編集して、あなたのクラッシュに関連した全体のJavaスタックトレースを投稿してください。また、 'sort()'をどこで呼びますか? – CommonsWare

+0

スタックトレースを含め、ここで完全なエラーを送信してください。これを呼び出すコードを投稿してください。ソート後のリフレッシュのコードは問題ありません。あなたの問題は他にあります。 –

+0

ガベージコレクションが行われている可能性があります。すべてが正しくインスタンス化されていますか? – Illdapt

答えて

0

リストビューアイテムがクリックされるとソートが呼び出されるので、衝突が発生します。あなたが考えるかもしれ何

ではなく、単にrefreshListViewを呼び出すPostDelayedを使用している:

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

素晴らしい提案。私はそれを試してみましょう。 – dawoodman71

関連する問題