【问题标题】:Retrofit Equeue Multiple RecyclerViews改造队列多个 RecyclerViews
【发布时间】:2019-08-27 05:50:28
【问题描述】:

我正在使用retrofit2 将多个recyclerview 排入队列。它在一个 recyclerview 上工作得很好,但是当我去排队第二个具有不同类别的它时它不起作用。

我已经尝试过第二个onresponse方法,我想不出任何其他方法

Call<MovieResponse> call = apiInterface.getTopRatedMovies(API_KEY);//This one is working!

Call<MovieResponse> call1 = apiInterface.getNowPlayingMovies(API_KEY); //This is what i what to implement

这里是代码

Call<MovieResponse> call = apiInterface.getTopRatedMovies(API_KEY);

call.enqueue(new Callback<MovieResponse>() {
            @Override
            public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) {
                int statuscode =response.code();
                List<Movie> movies = response.body().getResults();

                recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.movie_item, getContext()));

                recyclerView1.setAdapter(new MoviesAdapter(movies, R.layout.movie_item, getContext())); //this works but not with the NowPlayingMovies, tested to see if it was the other recyclerview

            }

            @Override
            public void onFailure(Call<MovieResponse> call, Throwable t) {
                //Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });

【问题讨论】:

  • 您需要链接请求调用成功-> call1->成功然后初始化两个recyclerview的适配器或在每次成功时初始化。我认为这对你有用:stackoverflow.com/questions/34750719/how-chain-retrofit-calls
  • 谢谢!!我不知道我是怎么错过的,哈哈
  • it doesnt work. 究竟如何?
  • 它没有出现,但我设法链接请求并修复它

标签: java android


【解决方案1】:

如果您不喜欢使用 RxJava,那么您可以使用以下解决方案:

Call<MovieResponse> call = apiInterface.getTopRatedMovies(API_KEY);

call.enqueue(new Callback<MovieResponse>() {
            @Override
            public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) {
                int statuscode =response.code();
                List<Movie> movies = response.body().getResults();

                recyclerView.setAdapter(new MoviesAdapter(movies, R.layout.movie_item, getContext()));
                secondAPICall();
            }

            @Override
            public void onFailure(Call<MovieResponse> call, Throwable t) {
                //Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });

public void secondAPICall(){
            call1.enqueue(new Callback<MovieResponse>() {
            @Override
            public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) {
                int statuscode =response.code();
                List<Movie> movies = response.body().getResults();

                recyclerView1.setAdapter(new MoviesAdapter(movies, R.layout.movie_item, getContext()));



            }

            @Override
            public void onFailure(Call<MovieResponse> call, Throwable t) {
                //Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
}


【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多