From 72e8aba1a189b0ec1dc2b2ea1a7ddeacf0eff4c5 Mon Sep 17 00:00:00 2001 From: tomoima525 Date: Mon, 14 Aug 2017 22:28:22 -0700 Subject: [PATCH] less memory usage --- .../infiniterotation/InfiniteRotationAdapter.kt | 10 +++++----- .../infiniterotation/InfiniteRotationView.kt | 15 +++++++-------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationAdapter.kt b/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationAdapter.kt index bd366dd..a05315b 100644 --- a/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationAdapter.kt +++ b/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationAdapter.kt @@ -11,8 +11,10 @@ import butterknife.ButterKnife /** * Created by tomoaki on 2017/08/13. */ -class InfiniteRotationAdapter(val list: List) - : RecyclerView.Adapter() { +class InfiniteRotationAdapter(itemList: List) : RecyclerView.Adapter() { + + private val list: List = listOf(itemList.last()) + itemList + listOf(itemList.first()) + override fun onBindViewHolder(holder: RecyclerView.ViewHolder?, position: Int) { (holder as? ItemViewHolder)?.let { it.pageName.text = list[position % list.size].page @@ -29,9 +31,7 @@ class InfiniteRotationAdapter(val list: List) return ItemViewHolder(view) } - override fun getItemCount() = list.size * 3 - - fun getListSize() = list.size + override fun getItemCount() = list.size internal class ItemViewHolder(view: View): RecyclerView.ViewHolder(view) { @BindView(R.id.page_name) diff --git a/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationView.kt b/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationView.kt index 69d4fa4..0978dcb 100644 --- a/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationView.kt +++ b/app/src/main/java/com/tomoima/infiniterotation/InfiniteRotationView.kt @@ -35,12 +35,12 @@ class InfiniteRotationView(context: Context, attributeSet: AttributeSet) val snapHelper = PagerSnapHelper() snapHelper.attachToRecyclerView(recyclerView) - adapter.getListSize() + adapter.itemCount .takeIf { it > 1 } ?.apply { - onScrollListener = OnScrollListener(adapter.getListSize(), layoutManager) + onScrollListener = OnScrollListener(adapter.itemCount, layoutManager) recyclerView.addOnScrollListener(onScrollListener) - recyclerView.scrollToPosition(adapter.getListSize()) + recyclerView.scrollToPosition(1) } } @@ -51,13 +51,12 @@ class InfiniteRotationView(context: Context, attributeSet: AttributeSet) super.onScrolled(recyclerView, dx, dy) val firstItemVisible = layoutManager.findFirstVisibleItemPosition() - - if (firstItemVisible > itemCount && firstItemVisible % itemCount == 0) { + if (firstItemVisible > 0 && firstItemVisible % (itemCount - 1) == 0) { // When position reaches end of the list, it should go back to the beginning - recyclerView?.scrollToPosition(itemCount) - } else if (firstItemVisible == itemCount - 1) { + recyclerView?.scrollToPosition(1) + } else if (firstItemVisible == 0) { // When position reaches beginning of the list, it should go back to the end - recyclerView?.scrollToPosition(itemCount * 2) + recyclerView?.scrollToPosition(itemCount - 1) } } }