首页 > 解决方案 > 如何在android studio中使用parcelable在活动之间传递数据

问题描述

我有一个 recyclerview 显示电影列表,我希望当单击的项目电影可以使用 parcelable 将数据传递给详细信息

这是我的 viewHolderAdapter

public class MovieVHolder extends RecyclerView.ViewHolder {

        TextView mTxtTitleMovie, mTxtDescriptionMovie, mTxtDateMovie;
        ImageView mImgPosterMovie;

        public MovieVHolder(@NonNull final View itemView) {
            super(itemView);
            mTxtTitleMovie = itemView.findViewById(R.id.txt_title_movie);
            mTxtDescriptionMovie = itemView.findViewById(R.id.txt_desc_movie);
            mTxtDateMovie = itemView.findViewById(R.id.txt_date_movie);
            mImgPosterMovie = itemView.findViewById(R.id.img_movie);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent i = new Intent(context, DetailActivity.class);
                    context.startActivity(i);
                }
            });

        }

        public void bind(ListMovieEntity listMovieEntity) {
            mTxtTitleMovie.setText(listMovieEntity.getMovieTittle());
            mTxtDescriptionMovie.setText(listMovieEntity.getMovieDescription());
            mTxtDateMovie.setText(listMovieEntity.getMovieDate());
            Glide.with(context)
                    .load("https://image.tmdb.org/t/p/w185/"+listMovieEntity.getMoviePosterPath())
                    .into(mImgPosterMovie);
        }
    }

我在模型类中添加了 parcelable

标签: javaandroidparcelable

解决方案


像这样改变itemviewclick

itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent i = new Intent(context, DetailActivity.class);
    //addthis       i.putExtra(DetailActivity.MOVIE, entListMovie.get(getPosition()));
                    context.startActivity(i);
                }
            });

并在细节上像这样

添加这个

public static final String MOVIE = "movie";

在方法 onCreate() 添加这个

YourList yourList = getIntent().getParcelableExtra(MOVIE);

之后,只需设置数据

textview.setText(yourList.getBlaBla());

推荐阅读