[英]Launch another activity with cardview details
I want to throw Launch another activity with cardview details 我想抛出带有cardview详细信息的另一个活动
this tutorial http://androidbash.com/connecting-android-app-to-a-database-using-php-and-mysql/ 本教程http://androidbash.com/connecting-android-app-to-a-database-using-php-and-mysql/
public class MoviesAdapter extends RecyclerView.Adapter { 公共类MoviesAdapter扩展了RecyclerView.Adapter {
private Context context;
private List<Movie> movies;
public MoviesAdapter(Context context, List<Movie> movies) {
this.context = context;
this.movies = movies;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.movieName.setText(movies.get(position).getMovieName());
holder.movieGenre.setText(movies.get(position).getMovieGenre());
Glide.with(context).load(movies.get(position).getImageLink()).into(holder.imageView);
}
@Override
public int getItemCount() {
return movies.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public TextView movieName;
public TextView movieGenre;
public ImageView imageView;
public ViewHolder(View itemView) {
super(itemView);
movieName = (TextView) itemView.findViewById(R.id.moviename);
imageView = (ImageView) itemView.findViewById(R.id.image);
movieGenre = (TextView) itemView.findViewById(R.id.genre);
imageView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
showPopupMenu(v,position);
}
}
private void showPopupMenu(View view, int poaition) {
PopupMenu popup = new PopupMenu(context, view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu_context, popup.getMenu());
popup.setOnMenuItemClickListener(new MenuClickListener(poaition));
popup.show();
}
class MenuClickListener implements PopupMenu.OnMenuItemClickListener {
Integer pos;
public MenuClickListener(int pos) {
this.pos=pos;
}
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.action_favourite:
Toast.makeText(context, movies.get(pos).getMovieName()+" is added to favourite", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_watch:
Toast.makeText(context, movies.get(pos).getMovieName()+" is added to watchlist", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_book:
Toast.makeText(context, "Booked Ticket for "+movies.get(pos).getMovieName(), Toast.LENGTH_SHORT).show();
return true;
default:
}
return false;
}
}
} }
Must read: https://developer.android.com/training/basics/firstapp/starting-activity.html 必须阅读: https : //developer.android.com/training/basics/firstapp/starting-activity.html
When you click on a card take the data bound to this card and put it to the intent: 当您单击卡时,请获取与此卡绑定的数据,然后将其放到意图中:
@Override
public void onClick(View v) {
int position = getAdapterPosition();
showPopupMenu(v,position);
Movie movie = movies.get(position);
Intent intent = new Intent(v.getContext(), MovieActivity.class);
intent.putExtraSerializable(MOVIE_KEY, movie);
v.getContext().startActivity(intent);
}
To make this work adjust your Movie class: 为了使这项工作调整您的电影课:
class Movie implements Serializable {// your fields and methods}
Then in MovieActivity onCreate: 然后在MovieActivity onCreate中:
Movie movie = (Movie) getIntent().getSerializableExtra(MOVIE_KEY);
Using this instance you can populate your view with a data. 使用此实例,您可以用数据填充视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.