Java 启动另一个包含cardview详细信息的活动

Java 启动另一个包含cardview详细信息的活动,java,android,android-recyclerview,android-cardview,Java,Android,Android Recyclerview,Android Cardview,我想启动另一个包含cardview详细信息的活动 本教程 公共类MoviesAdapter扩展了RecyclerView.Adapter{ private Context context; private List<Movie> movies; public MoviesAdapter(Context context, List<Movie> movies) { this.context = context; this.movies = movies

我想启动另一个包含cardview详细信息的活动

本教程

公共类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;
    }
}
私有上下文;
私人电影名单;
公共电影适配器(上下文,电影列表){
this.context=上下文;
这部电影=电影;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View itemView=LayoutInflater.from(parent.getContext()).flate(R.layout.card,parent,false);
返回新的ViewHolder(itemView);
}
@凌驾
公共无效onBindViewHolder(最终ViewHolder,内部位置){
holder.movieName.setText(movies.get(position.getMovieName());
holder.movieGenre.setText(movies.get(position.getMovieGenre());
Glide.with(context).load(movies.get(position.getImageLink())到(holder.imageView)中;
}
@凌驾
public int getItemCount(){
返回电影。大小();
}
公共类ViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
公共文本视图movieName;
公共文本视图电影类型;
公共影像视图;
公共视图持有者(视图项视图){
超级(项目视图);
movieName=(TextView)itemView.findViewById(R.id.movieName);
imageView=(imageView)itemView.findViewById(R.id.image);
movieGenre=(TextView)itemView.findViewById(R.id.genre);
setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
int position=getAdapterPosition();
显示弹出菜单(v,位置);
}
}
私有void显示弹出菜单(视图、内部视图){
PopupMenu popup=新的PopupMenu(上下文、视图);
MenuInflater充气器=弹出窗口。getMenuInflater();
充气器。充气(R.menu.menu_上下文,popup.getMenu());
setOnMenuItemClickListener(新菜单ClickListener(poaition));
popup.show();
}
类MenuClickListener实现PopupMenu.OnMenuItemClickListener{
整数位;
公共菜单ClickListener(int pos){
这个.pos=pos;
}
@凌驾
公共布尔onMenuItemClick(MenuItem MenuItem){
开关(menuItem.getItemId()){
案例R.id.action\u最喜欢的:
Toast.makeText(上下文,movies.get(pos).getMovieName()+“添加到收藏夹”,Toast.LENGTH_SHORT.show();
返回true;
案例R.id.action_watch:
Toast.makeText(上下文,movies.get(pos).getMovieName()+“被添加到监视列表”,Toast.LENGTH_SHORT.show();
返回true;
案例R.id.行动书:
Toast.makeText(上下文,“预订的电影票”+movies.get(pos.getMovieName(),Toast.LENGTH_SHORT.show();
返回true;
违约:
}
返回false;
}
}
}必须阅读:

当您单击一张卡时,获取绑定到此卡的数据,并将其放入目的:

@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);
}
要使此项工作正常,请调整电影类:

class Movie implements Serializable {// your fields and methods}
然后在MovieActivity onCreate中:

Movie movie = (Movie) getIntent().getSerializableExtra(MOVIE_KEY);

使用此实例,您可以使用数据填充视图。

您可以将值放入Bundle,并在启动新活动时将此Bundle置于intent。Bundle b=新Bundle();b、 putExtra(键、值);KEY是一个字符串,VALUE-可以是Bundle允许的类型之一(在您的示例中是String)。您可以使类Movie可序列化(实现标记接口可序列化),并将其放入Bundle中。然后在activitie的onCreate中,您可以使用指定的键获取它欢迎使用堆栈溢出。您应该在问题中添加更多描述,而不仅仅是带有链接和代码的“本教程”。