I'm trying to trigger a transition to the detail page when clicking on a Recyclerview item. The detail page uses a ViewPager2 tag because it displays multiple images. The recyclerView has a normal ImageView which displays the first image of several images in an array. If I click on it, I get to the detail page where this image is also displayed first in ViewPager2, so far as I understand. The problem is that absolutely nothing happens. In other words, the small picture of RV should be enlarged and displayed on the details page. Something like this: https://developer.android.com/guide/fragments/animate
class NearbyAdapter(private val dataSet: ArrayList<Store>,private val ctx: Context) :
RecyclerView.Adapter<NearbyAdapter.ViewHolder>() {
private var onClickDetailListener: OnClickDetailListener? = null
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val hauptBild: ImageView
...
fun bind(id: String) {
ViewCompat.setTransitionName(hauptBild, id);
}
init {
...
}
}
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
var store = dataSet[position]
viewHolder.itemView.transitionName = viewHolder.bind(store.name!!).toString()
viewHolder.itemView.setOnClickListener {
if (onClickDetailListener != null) {
onClickDetailListener!!.onClick(store,viewHolder.itemView)
}
}
}
fun setOnClickDetailListener(onClickListener: OnClickDetailListener) {
this.onClickDetailListener = onClickListener
}
interface OnClickDetailListener {
fun onClick(store: Store, itemView: View)
}
MainActivity.kt:
nearbyAdapter!!.setOnClickDetailListener(object : NearbyAdapter.OnClickDetailListener {
override fun onClick(store: Store, itemView: View) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val intent = Intent(this@MainActivity,DetailSite::class.java)
intent.putExtra("transitionName", itemView.transitionName)
intent.putExtra("store", store)
val options = ActivityOptions
.makeSceneTransitionAnimation(this@MainActivity, itemView, ViewCompat.getTransitionName(findViewById(R.id.storeImage)))
startActivity(intent,options.toBundle())
}
}
})
DetailSite.kt:
class DetailSite : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
setContentView(view)
postponeEnterTransition();
val extras = intent.extras
ViewCompat.setTransitionName(binding.sliderViewPager,extras?.getString("transitionName"));
}