Я даю первые шаги в MVVM , у меня есть приложение imbd, использующее модернизацию. На данный момент у меня есть динамический c URL, который изменяет список фильмов, передавая другой mov ie id
@GET("3/movie/{movie_id}}/similar?api_key="+api_key+"&language=en-US&page=1")
Call<Similar> getAllSimilarMovies(@Path("movie_id") int movieId);
У меня есть репозиторий, где я пытаюсь получить значения Intent, но .getIntent не работает, Intent находится в окне просмотра, передавая ID из mov ie, нажатых
public class DetailsMovieRepository {
private List<ResultSimilar> similarMoviesList;
private MutableLiveData<List<ResultSimilar>> mutableLiveData = new MutableLiveData<>();
public MutableLiveData<List<ResultSimilar>> getSimilarMutableliveData() {
MovieDataService movieDataService = RetrofitInstance.getRetrofitInstance();
Intent intent = getIntent(); // DONT WORK!
int movieId = intent.getIntExtra("movie_id",0);
Call<Similar> call = movieDataService.getAllSimilarMovies(movieId);
call.enqueue(new Callback<Similar>() {
@Override
public void onResponse(Call<Similar> call, Response<Similar> response) {
Similar similar = response.body();
if (similar != null && similar.getResults() != null) {
similarMoviesList = similar.getResults();
mutableLiveData.setValue(similarMoviesList);
}
}
@Override
public void onFailure(Call<Similar> call, Throwable t) {
Log.e("onFailed", " ******" + t.getMessage() + "*******");
}
});
return mutableLiveData;
}
}
Вопрос в том, как мне получить значение из Intent, сохранить как var и передать здесь
Call<Similar> call = movieDataService.getAllSimilarMovies(---MY INTENT VALUE---);
Стартовое намерение в адаптере
private SimilarViewHolder(@NonNull View itemView) {
super(itemView);
movieNameTv = itemView.findViewById(R.id.name_movie_tv);
movieRatingTv = itemView.findViewById(R.id.rating_movie_tv);
moviePosterIV = itemView.findViewById(R.id.movie_poster_iv);
movieDateTv = itemView.findViewById(R.id.date_movie_tv);
movieVotesTv = itemView.findViewById(R.id.votes_movie_tv);
movieOriginalTitleTv = itemView.findViewById(R.id.original_title_tv);
movieLanguageTv = itemView.findViewById(R.id.language_movie_tv);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
ResultSimilar selectedMovie = similarMoviesList.get(position);
Intent intent = new Intent(context, DetailsActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("movie_id",selectedMovie.getId());
intent.putExtras(bundle);
context.startActivity(intent);
Log.e("ddddd" , "***" + selectedMovie.getId());
}});
}
}
Служба данных
public interface MovieDataService {
String api_key = "5bbf68dcf3b4ad3875ef7b2ed5ddfe1a";
@GET("3/movie/now_playing?api_key="+api_key+"&language=en-US&page=1")
Call<Movies> getAllMovies();
@GET("3/movie/{movie_id}}?api_key="+api_key+"&language=en-US")
Call<MovieResponse> getMovieDetails(@Path("movie_id") int movieId) ;
@GET("3/movie/{movie_id}}/similar?api_key="+api_key+"&language=en-US&page=1")
Call<Similar> getAllSimilarMovies(@Path("movie_id") int movieId);
}
Спасибо!