From a46f2bcd91f8d43cc6f52c1c67200bad0818bbe6 Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Wed, 13 Nov 2019 10:21:10 +0900 Subject: [PATCH 1/2] Fixed to to reset carousel position when CaroucelItem is displayed again --- .../example/databinding/item/CarouselItem.java | 2 +- .../com/xwray/groupie/example/item/CarouselItem.kt | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/example-databinding/src/main/java/com/xwray/groupie/example/databinding/item/CarouselItem.java b/example-databinding/src/main/java/com/xwray/groupie/example/databinding/item/CarouselItem.java index bebfebf6..35e7820b 100644 --- a/example-databinding/src/main/java/com/xwray/groupie/example/databinding/item/CarouselItem.java +++ b/example-databinding/src/main/java/com/xwray/groupie/example/databinding/item/CarouselItem.java @@ -33,11 +33,11 @@ public GroupieViewHolder createViewHolder(@NonNull View ite RecyclerView recyclerView = viewHolder.binding.recyclerView; recyclerView.addItemDecoration(carouselDecoration); recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext(), LinearLayoutManager.HORIZONTAL, false)); + recyclerView.setAdapter(adapter); return viewHolder; } @Override public void bind(@NonNull ItemCarouselBinding viewBinding, int position) { - viewBinding.recyclerView.setAdapter(adapter); } @Override public int getLayout() { diff --git a/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt b/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt index 44cf58ab..c6720110 100644 --- a/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt +++ b/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt @@ -1,5 +1,6 @@ package com.xwray.groupie.example.item +import android.view.View import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.xwray.groupie.GroupAdapter @@ -7,6 +8,7 @@ import com.xwray.groupie.example.R import com.xwray.groupie.kotlinandroidextensions.Item import com.xwray.groupie.kotlinandroidextensions.GroupieViewHolder import kotlinx.android.synthetic.main.item_carousel.* +import kotlinx.android.synthetic.main.item_carousel.view.* /** * A horizontally scrolling RecyclerView, for use in a vertically scrolling RecyclerView. @@ -18,11 +20,16 @@ class CarouselItem(private val carouselDecoration: RecyclerView.ItemDecoration, return R.layout.item_carousel } - override fun bind(viewHolder: GroupieViewHolder, position: Int) { - viewHolder.recyclerView.apply { + override fun createViewHolder(itemView: View): GroupieViewHolder { + itemView.recyclerView.apply { layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) adapter = carouselAdapter + } + return super.createViewHolder(itemView) + } + override fun bind(viewHolder: GroupieViewHolder, position: Int) { + viewHolder.recyclerView.apply { // We don't know if the layout we're passed has been bound before so // we need to ensure we don't register the item decoration multiple times, // by trying to remove it first. (Nothing happens if it's not registered.) From 0054751c12ce194f80c4161c8cb8487dfb87bc6e Mon Sep 17 00:00:00 2001 From: NUmeroAndDev Date: Wed, 13 Nov 2019 10:36:37 +0900 Subject: [PATCH 2/2] Changed approach to get recyclerView --- .../com/xwray/groupie/example/item/CarouselItem.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt b/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt index c6720110..1e7b2841 100644 --- a/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt +++ b/example/src/main/java/com/xwray/groupie/example/item/CarouselItem.kt @@ -8,7 +8,6 @@ import com.xwray.groupie.example.R import com.xwray.groupie.kotlinandroidextensions.Item import com.xwray.groupie.kotlinandroidextensions.GroupieViewHolder import kotlinx.android.synthetic.main.item_carousel.* -import kotlinx.android.synthetic.main.item_carousel.view.* /** * A horizontally scrolling RecyclerView, for use in a vertically scrolling RecyclerView. @@ -21,11 +20,12 @@ class CarouselItem(private val carouselDecoration: RecyclerView.ItemDecoration, } override fun createViewHolder(itemView: View): GroupieViewHolder { - itemView.recyclerView.apply { - layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) - adapter = carouselAdapter + return super.createViewHolder(itemView).apply { + recyclerView.apply { + layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) + adapter = carouselAdapter + } } - return super.createViewHolder(itemView) } override fun bind(viewHolder: GroupieViewHolder, position: Int) {