私はこの問題について、Stackoverflowで非常に多くの記事を読んでいます...私は見たすべてのソリューションを実装しましたが、notifyDataSetChangedは、アプリケーションを開いたときに動作しません。
何が起こっているのですか?アプリケーションを開くときにnotifyDataSetChangedが機能しません。私が向きを変えたり、並べ替えを変えたりすると(人気のあるものから人気のものへ、あるいはその逆)、それが動作します。コードをデバブし、データがアダプタに正しく到着しましたが、通知が機能しないため、インターフェイスが更新されません。
誰でも助けてくれますか?
私のonCreateメソッド:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources rs = getResources();
int numColumns = rs.getInteger(R.integer.list_columns);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view_popular_movies);
mErrorMessageDisplay = (TextView)findViewById(R.id.tv_error_message_display);
mLoadingIndicator = (ProgressBar) findViewById(R.id.pb_loading_indicator);
//Resource based on https://discussions.udacity.com/t/is-there-a-way-to-fit-columns-in-gridlayoutmanager/221936/4
GridLayoutManager layoutManager = new GridLayoutManager(this, numColumns);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.setHasFixedSize(true);
mPopularMoviesAdapter = new PopularMoviesAdapter(this, this);
mRecyclerView.setAdapter(mPopularMoviesAdapter);
loadMoviesData(NetworkUtils.POPULAR_SORT);
}
loadMoviesData方法は、単にAsyncTaskから実行する()を呼び出します。
マイonPostExecuteコード:
@Override
protected void onPostExecute(String result) {
Log.v(TAG, "onPostExecute");
mLoadingIndicator.setVisibility(View.INVISIBLE);
if(result != null){
showMoviesDataView();
Gson gson = new Gson();
Movies data = gson.fromJson(result, Movies.class);
mPopularMoviesAdapter.setMovieList(data);
} else {
showErrorMessage();
}
}
マイsetMovieList方法:
public void setMovieList(Movies movieList) {
this.movieList = movieList;
this.notifyDataSetChanged();
}
私の完全なコード:私はあなたのコードを見ていたし、あなたのnotifyDataSetChanged()
が動作しているhttps://github.com/guuilp/PopularMovies
それはあなたが関連していると思うのコードの小さなスニペットを投稿する方が良いでしょう。それは問題を持っている 'onCreate()'メソッドですか? – Jack
アドバイスありがとう、@ジャック!コードサンプルを使って元の投稿を変更しました。私はそれが問題を持っているonCreateメソッド上にあるとは思わない。 私は理由を説明します:このプロジェクトは、ユーザーが選択したものに基づいて、人気の高い映画を表示することです。アプリケーションを開くと、人気(空白)が表示されます。私が再びポピュラーをチェックすると(アクションバーのオプションです)、ポピュラーが表示されます。初めてトップ評価をチェックした場合、同じ問題:空白のリスト。しかし、私が再びチェックすると、正しく入力されます。 –
mRecyclerView.setAdapter(mPopularMoviesAdapter)の前にloadMoviesData(NetworkUtils.POPULAR_SORT)を実行しようとしましたか? – Diekrul