0
フラグメントのLoader Managerコールバックに対して、onLoadFinishedのコード行があります。コードの問題はArrayAdapterにfavoriteMoviesを表示する必要があることです。なぜなら、logステートメントでカーソルまたはデータが空ではないことが示されている間は、何らかの理由でゼロになります。Loader ManagerのonLoadFinishedでCursorからデータを抽出する
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
Log.i(TAG, "Loader Manager Loading Finished: " + data.getCount());
if (data != null && data.getCount() > 0) {
while (data.moveToNext()) {
favouriteMovies.add(
new Movie(
data.getString(2),
data.getString(3),
data.getString(4),
data.getInt(1),
data.getString(5),
data.getDouble(6),
data.getDouble(7)
));
}
setMovies(favouriteMovies);
hideLoadingProgress();
mAdapter.notifyDataSetChanged();
} else {
showEmptyView(EMPTY_VIEW_TYPE_LOCAL);
hideLoadingProgress();
}
}
このコードを書くと、実際にはsetステートメントを終了してからsetMovies()メソッドを呼び出すことができます。私のアプリをバックグラウンドで最小限に抑えて復元すると、映画は表示されますが、初めて呼び出されると機能しません。
'「コードの問題がfavoriteMoviesがArrayAdapterに表示する必要があるということです」'、はい確かに、これは問題であり、 'Cursor'ベースのデータを扱う際に' ArrayAdapter'を使用してはいけません、代わりに 'SimpleCursorAdapter'を使用してください(または他の' CursorAdapter') – pskink
SimpleCursorAdapterは、モデルにマップされているretrofitを使用してjsonとしてサーバーから取得されたデータの一部としては機能しません。 。 – Po10cio
'MatrixCursor'を使うと、' MergeCursor'と組み合わせて使用する可能性が最も高いです – pskink