NowShowingFragment.java
nowShowingAdapter = new NowShowingAdapter(nowShowingMovieList, new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(mContext, MovieDetailActivity.class); intent.putExtra("movie",nowShowingMovieList.get(position)); startActivity(intent);
它导致详细 Activity (MovieDetailActivity.java)
private Movie selectedMovie ; selectedMovie = (Movie) getIntent().getSerializableExtra("movie"); int movieId = selectedMovie.getMovieId(); Bundle bundle = new Bundle(); bundle.putString("language", selectedMovie.getMovieLanguage()); bundle.putString("duration", selectedMovie.getMovieDuration()); bundle.putString("director", selectedMovie.getMovieDirector()); bundle.putString("genre", selectedMovie.getMovieGenre()); bundle.putString("description", selectedMovie.getMovieDescription()); bundle.putSerializable("selected", selectedMovie); // set MyFragment Arguments NowShowingFragment movieObject = new NowShowingFragment(); movieObject.setArguments(bundle);
它包含 3 个 fragment ,它们是: i) MovieInformationFragment.java
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); tvMovieLanguage = view.findViewById(R.id.tvMovieLanguage); tvMovieGenre = view.findViewById(R.id.tvMovieGenre); tvMovieDirector = view.findViewById(R.id.tvMovieDirector); tvMovieDuration = view.findViewById(R.id.tvMovieDuration); tvMovieLanguage.setText(this.getArguments().getString("language")); tvMovieGenre.setText(this.getArguments().getString("genre")); tvMovieDirector.setText(this.getArguments().getString("director")); tvMovieDuration.setText(this.getArguments().getString("duration"));
ii)MovieDescriptionFragment.java 它包含电影的故事情节。
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
tvMovieDescription = view.findViewById(R.id.tvMovieDescription);
tvMovieDescription.setText(this.getArguments().getString("description"));
}
iii)MovieCastFragment.java 它包含所选电影的 Actor 图像和名称。
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mContext = getContext();
progressBar = view.findViewById(R.id.progressBar);
rvMoviecast = view.findViewById(R.id.rvMoviecast);
Serializable castArray = getArguments().getSerializable("selectedMovie");
}
MovieCastFragment 由 MovieCastAdapter 组成,因为我在其中使用了回收器 View 。
@Override
public void onBindViewHolder(@NonNull movieCastHolder holder, int position) {
Context context = holder.itemView.getContext();
Picasso.get().load(dataset.get(position).getActorImage()).placeholder(R.drawable.image_placeholder).into(holder.ivActorImage);
holder.tvActorName.setText(dataset.get(position).getActorName());
}
所有这些 fragment 均由 MovieDetailPagerAdapter.java 管理,我已将其代码发布如下:
public Fragment getItem(int position) {
if (position==0){
return new MovieInfromationFragment();
}else if(position==1){
return new MovieCastFragment();
}else if(position==2){
return new MovieDescriptionFragment();
}
return null;
}
最佳答案
您可以使用 Retrofit 获取数据并将其存储在 MoviesData 列表中,并在 DetailActivity 中显示特定电影的详细信息,将该电影对象作为额外内容传递给该 Activity 。就像这样:
Intent intent = new Intent(this, ItemDetailActivity.class);
intent.putExtra("selectedMovie", selectedMovie);
startActivity(intent);
这里,selectedMovie是你想要在DetailActivity中显示的电影对象。
然后要将电影细节分享到 fragment ,请尝试以下操作:
Bundle arguments = new Bundle();
arguments.putParcelable("selectedMovie", selectedMovie);
MovieDetailFragment fragment = new MovieDetailFragment();
fragment.setArguments(arguments);
this.getSupportFragmentManager().beginTransaction()
.replace(R.id.movie_detail_container, fragment)
.commit();
希望它对您有用!
关于java - 如何将所选电影的数据获取到detailActivity,然后获取到detail Activity中的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62389746/