2016-05-31 7 views
0

のAndroid StudioのAPIコールの後のArrayListを更新できませんアダプターは実行されますが、API呼び出しが完了する前に実行されます。私はこれが時間内に終了していないスレッドによって引き起こされたと推測しています。私は並べ替える前にスリープステートメントを入れてみましたが、それは全体の活動を一時停止するようです。 コードをさらに実行する前にAPI呼び出しが完了するまでどのように待機できますか?は、私はそれがAPI呼び出しから取得された後のアルファベット順に配列リストを並べ替えしようとしています

答えて

0
m_peopleAdapter.notifyDataSetChanged(); 

は、あなたがデータセットが変更された後、アダプターを通知する必要があり、この

api.getAllPeople(i, new Callback<SWModelList<People>>() { 
@Override 
public void success(SWModelList<People> planetSWModelList, Response response) { 
    for (People p : planetSWModelList.results) { 
     peopleArrayList.add(p); 
    } 
    m_peopleAdapter.notifyDataSetChanged(); 
} 

@Override 
public void failure(RetrofitError error) { 
    System.out.print("failure"); 
} 
}); 

のようなあなたのAPI-コールバックにする必要があります。コールが開始された直後に、コードによって通知がトリガされました。

0

コードをさらに実行する前に、API呼び出しが完了するまでどのように待機できますか?

successメソッドは、要求が完了したときにUIスレッドで呼び出されます。すべてのアダプタ設定を行うか、の方法でnotifyDataSetChangedを呼び出して、アダプタデータをAPIから取得した後に更新する方法:

@Override 
    public void success(....) { 
     for (People p : planetSWModelList.results) { 
      peopleArrayList.add(p); 
     } 
     // call notifyDataSetChanged here 
     m_peopleAdapter.notifyDataSetChanged(); 
    } 
関連する問題