Search code examples
javaandroidparcelable

How to pass data between activity using parcelable in android studio


i have a recyclerview shows the list of movie, i want when the item movie clicked can pass data to detail using parcelable

this my 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);
        }
    }

and I've added parcelable in model class


Solution

  • change itemviewclick like this

    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);
                    }
                });
    

    and in the detail make like this

    add this

    public static final String MOVIE = "movie";
    

    in method onCreate() add this

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

    after that, just set the data

    textview.setText(yourList.getBlaBla());