В приведенном ниже классе определяется содержимое фильма.Получение содержимого элемента RecyclerView для другого действия
public class MovieCard {
String mAlbumArtURL;
String mName;
String mSynopsis;
String mRating;
String mReleaseDate;
public MovieCard(String albumArtURL, String name, String synopsis, String rating, String releaseDate) {
this.mAlbumArtURL = albumArtURL;
this.mName = name;
this.mSynopsis = synopsis;
this.mRating = rating;
this.mReleaseDate = releaseDate;
}
public String getAlbumArtURL() {
return mAlbumArtURL;
}
public void setAlbumArtURL(String mAlbumArtURL) {
this.mAlbumArtURL = mAlbumArtURL;
}
public String getName() {
return mName;
}
public void setName(String mName) {
this.mName = mName;
}
public String getSynopsis() {
return mSynopsis;
}
public void setSynopsis(String mSynopsis) {
this.mSynopsis = mSynopsis;
}
public String getRating() {
return mRating;
}
public void setRating(String mRating) {
this.mRating = mRating;
}
public String getReleaseDate() {
return mReleaseDate;
}
public void setReleaseDate(String mReleaseDate) {
this.mReleaseDate = mReleaseDate;
}
}
Первое мероприятие приложение дает список альбомов кино искусства. Данные для рендеринга извлекаются из API. Данные включают название фильма, дату выхода, синопсис сюжета и т. Д. Но в первом действии показан только плакат (обложка альбома). Теперь я назначаю OnclickListener классу ViewHolder, чтобы начать новое действие, всякий раз, когда пользователь нажимает на любой из плакатов. Второе действие должно содержать сведения о клиенте, на который нажимается фильм. Все данные извлекаются в AsyncTask первой активности. Я мог бы начать новую деятельность, но я не могу понять, как отправить необходимое содержимое ViewHolder, на которое нажата, во второе действие. Я знаю, что данные отправляются с использованием «putextra», но проблема в том, что я не знаю, что отправлять. Я могу получить доступ только к позиции ViewHolder, но не к ее контенту.
Вот код для адаптера:
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MovieCardHolder> {
List<MovieCard> mMovieCards;
Context context;
public CustomAdapter(List<MovieCard> cards, Context c) {
this.mMovieCards = cards;
this.context = c;
}
@Override
public CustomAdapter.MovieCardHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.movie_card, parent, false);
MovieCardHolder movieCardHolder = new MovieCardHolder(view, context);
return movieCardHolder;
}
@Override
public void onBindViewHolder(CustomAdapter.MovieCardHolder holder, int position) {
holder.mMovieName.setText(mMovieCards.get(position).mName);
Picasso.with(context).load(mMovieCards.get(position).mAlbumArtURL).into(holder.mMoviePoster);
}
@Override
public int getItemCount() {
return mMovieCards.size();
}
public class MovieCardHolder extends RecyclerView.ViewHolder {
ImageView mMoviePoster;
TextView mMovieName;
public MovieCardHolder(final View itemView, final Context context) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Need details of the movie to be sent to the next activity.
Intent intent = new Intent(context,MovieDetail.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
mMoviePoster = (ImageView) itemView.findViewById(R.id.movie_poster);
mMovieName = (TextView) itemView.findViewById(R.id.movie_name);
}
}
}
Спасибо заранее.
Все детали в 'MovieCard' или извлечения с сервера в классе' MovieDetail'? –
Нет, они выбраны в первом классе, где определен RecyclerView. Они хранятся в Arraylist, содержащем объекты класса MovieCard. –