Cannot makeSceneTransitionAnimation in RecyclerView Adapter, Android

Viewed 25

I'm trying to make a transition between my RecyclewView and a activity when onClick, but the Adapter doesn't let it. Any suggestion in how could I solve this problem?

My onBindViewHolder that contains the target onClick method which I want to implement the transition animation:

    public void onBindViewHolder(@NonNull DataRVAdapter.ViewHolder holder, int position) {
        // setting data to our views in Recycler view items.
        DataModal modal = dataModalArrayList.get(position);
        holder.bookName.setText(modal.getName());

        // we are using Picasso to load images
        // from URL inside our image view.
        Picasso.get().load(modal.getCover()).placeholder(R.drawable.book_placeholder).into(holder.bookCover);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // setting on click listener
                // for our items of recycler items.
                //Toast.makeText(context, "Clicked item is " + modal.getName(), Toast.LENGTH_SHORT).show();
                // open activity with our book information
                Intent intent = new Intent(holder.itemView.getContext(), BookDetailsActivity.class);
                ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(holder.itemView.getContext(),holder.bookCover, ViewCompat.getTransitionName(holder.bookCover));
                intent.putExtra("name", dataModalArrayList.get(position).getName());
                intent.putExtra("cover", dataModalArrayList.get(position).getCover());
                intent.putExtra("author", dataModalArrayList.get(position).getAuthor());
                intent.putExtra("date", dataModalArrayList.get(position).getDate());
                intent.putExtra("publisher", dataModalArrayList.get(position).getPublisher());
                intent.putExtra("pages", dataModalArrayList.get(position).getPages());
                intent.putExtra("genre", dataModalArrayList.get(position).getGenre());
                intent.putExtra("isbn", dataModalArrayList.get(position).getIsbn());
                intent.putExtra("synopsis", dataModalArrayList.get(position).getSynopsis());

                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                holder.itemView.getContext().startActivity(intent, optionsCompat.toBundle());
            }
        });
    }

And here's my ViewHolder:

        // creating variables for our
        // views of recycler items.
        private TextView bookName;
        private ImageView bookCover;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            // initializing the views of recycler views.
            bookName = itemView.findViewById(R.id.idTVtext);
            bookCover = itemView.findViewById(R.id.idIVimage);
        }
    }

These codes are all inside my RecyclewView Adapter

So thank you in advance!

0 Answers
Related