8

新しいアーキテクチャ コンポーネントで使用できるサンプル コードを多数参照しましたが、プロジェクトのセットアップでまだいくつかの問題に直面しています。

リモート サービスからデータを取得し、部屋のデータベースに保存する必要があります。ビューで 1 つのライブ データ リストだけを監視したい。私の AppRepository は、RemoteRepository と LocalRepository を処理します。リモート リポジトリには、Web サービスからムービーのリストを受け取るメソッド fetchMovies() があります。このリストを部屋のデータベースに保存したいのですが、現在、私の RemoteRepository クラスがこれを行っています。

public void fetchMovieFromRemote(int page){
    movieService.fetchPopularMovies(ApiConstants.BASE_URL, page).enqueue(new Callback<List<Movie>>() {
        @Override
        public void onResponse(Call<List<Movie>> call, Response<List<Movie>> response) {
            int statusCode = response.code();
            if (statusCode == 200){
                mLocalRepository.insert(response.body());
            }
        }
        @Override
        public void onFailure(Call<List<Movie>> call, Throwable t) {
        }
    });
}

私の理解では、理想的には、リモート リポジトリとローカル リポジトリは独立している必要があり、この作業は AppRepository クラスによって実行される必要があります。これを行う 1 つの方法は、コールバックを使用することですが、ライブデータを使用してこれを行いたいと考えています。fetchMovieFromRemote(int page) メソッドはそのためのライブデータを返す必要がありますが、その場合、現在部屋から返される映画のリストのライブデータを持っているビューモデルでそれを処理する方法。

@Query("SELECT * from movie ORDER BY id ASC")
LiveData<List<Movie>> getAllWords();

私はMVVMを初めて使用します。このアーキテクチャの理想的なアプローチについて教えてください。

4

2 に答える 2