From 0bd7eeae87441b914a4e1ff105b46fe0ebb20506 Mon Sep 17 00:00:00 2001 From: Veronikapj Date: Mon, 1 Feb 2016 14:45:16 +0900 Subject: [PATCH 1/3] Update BaseLayoutManager.java (I am not English user, I hope you can understand my words) When fast scrolling, setItemEntryForPosition(position, entry) method called before mItemEntries make at ensureLayoutState(). if(mItemEntries == null) mItemEntries = new Itementries(); so I changed new ItemEntries() making time. --- .../org/lucasr/twowayview/widget/BaseLayoutManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/layouts/src/main/java/org/lucasr/twowayview/widget/BaseLayoutManager.java b/layouts/src/main/java/org/lucasr/twowayview/widget/BaseLayoutManager.java index 4193cc6..8e05f84 100644 --- a/layouts/src/main/java/org/lucasr/twowayview/widget/BaseLayoutManager.java +++ b/layouts/src/main/java/org/lucasr/twowayview/widget/BaseLayoutManager.java @@ -204,9 +204,10 @@ Lanes getLanes() { } void setItemEntryForPosition(int position, ItemEntry entry) { - if (mItemEntries != null) { - mItemEntries.putItemEntry(position, entry); - } + if(mItemEntries == null) + mItemEntries = new ItemEntries(); + mItemEntries.putItemEntry(position, entry); + } ItemEntry getItemEntryForPosition(int position) { From b5a5cf9e7d5d523fafcee1cf7c6403035b40f33f Mon Sep 17 00:00:00 2001 From: Veronikapj Date: Mon, 1 Feb 2016 16:07:16 +0900 Subject: [PATCH 2/3] Update ItemEntries.java I think sizeForPosition(position) method is complication. --- .../lucasr/twowayview/widget/ItemEntries.java | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java b/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java index 189e0c6..82c778a 100644 --- a/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java +++ b/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java @@ -34,28 +34,13 @@ class ItemEntries { private int mAdapterSize; private boolean mRestoringItem; - private int sizeForPosition(int position) { - int len = mItemEntries.length; - while (len <= position) { - len *= 2; - } - - // We don't apply any constraints while restoring - // item entries. - if (!mRestoringItem && len > mAdapterSize) { - len = mAdapterSize; - } - - return len; - } - private void ensureSize(int position) { if (mItemEntries == null) { mItemEntries = new ItemEntry[Math.max(position, MIN_SIZE) + 1]; Arrays.fill(mItemEntries, null); } else if (position >= mItemEntries.length) { ItemEntry[] oldItemEntries = mItemEntries; - mItemEntries = new ItemEntry[sizeForPosition(position)]; + mItemEntries = new ItemEntry[position + 1]; System.arraycopy(oldItemEntries, 0, mItemEntries, 0, oldItemEntries.length); Arrays.fill(mItemEntries, oldItemEntries.length, mItemEntries.length, null); } From cf01a7d0359fc1dcc83e0f2c4c311946b47e8694 Mon Sep 17 00:00:00 2001 From: Veronikapj Date: Mon, 1 Feb 2016 18:38:43 +0900 Subject: [PATCH 3/3] Update ItemEntries.java default mItemEntries size changed. --- .../main/java/org/lucasr/twowayview/widget/ItemEntries.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java b/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java index 82c778a..d965bd3 100644 --- a/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java +++ b/layouts/src/main/java/org/lucasr/twowayview/widget/ItemEntries.java @@ -31,18 +31,19 @@ class ItemEntries { private static final int MIN_SIZE = 10; private ItemEntry[] mItemEntries; - private int mAdapterSize; + private int mAdapterSize = MIN_SIZE; private boolean mRestoringItem; private void ensureSize(int position) { if (mItemEntries == null) { - mItemEntries = new ItemEntry[Math.max(position, MIN_SIZE) + 1]; + mItemEntries = new ItemEntry[Math.max(position, mAdapterSize) + 1]; Arrays.fill(mItemEntries, null); } else if (position >= mItemEntries.length) { ItemEntry[] oldItemEntries = mItemEntries; mItemEntries = new ItemEntry[position + 1]; System.arraycopy(oldItemEntries, 0, mItemEntries, 0, oldItemEntries.length); Arrays.fill(mItemEntries, oldItemEntries.length, mItemEntries.length, null); + mAdapterSize = position; } }