リーグのリストを表示するために、ParseQueryAdapter で ListFragment を使用しています (カスタム モデル)。ローディングアニメーションがまったく表示されないことを除いて、なんとか目的の状態を得ることができました。
ListsAdapter を設定すると (setListAdapter メソッドで) アニメーションが非表示になるように見えるので、リストを取得した後にのみアダプターを設定しますが、parseQueryAdapter はアダプターをリストに設定した後にのみリストを取得します。
そのため、アニメーションを非表示/表示するために setListShown メソッドを使用できることがわかりましたが、現在の実装では機能しません。
私のコード:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
// Create query factory
ParseQueryAdapter.QueryFactory<League> factory = new ParseQueryAdapter.QueryFactory<League>() {
public ParseQuery<League> create() {
ParseQuery<League> query = League.getQuery();
query.whereEqualTo(League.FIELD_USER, ParseUser.getCurrentUser());
query.orderByDescending(League.FIELD_CREATED_AT);
return query;
}
};
// Create adapter
leagueListAdapter = new LeagueAdapter(getActivity(), factory);
// Loading listener
leagueListAdapter.addOnQueryLoadListener(new ParseQueryAdapter.OnQueryLoadListener<League>() {
@Override
public void onLoading() {
// Show ListFragment's loading animation while loading
setListShown(false);
}
@Override
public void onLoaded(List<League> leagues, Exception e) {
if(e == null){
// Hide loading animation and show the list
setListShown(true);
// Put leagues in the cache
LeaguesCache.getInstance().setCachedLeagues(leagues);
} else {
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
// Set fragment's adapter
setListAdapter(leagueListAdapter);
// Dialogs
addLeagueDialog = new addLeagueDialog(this);
}