From d8ec998f7accc25ca03cdd3e3fbbd4847daadbb9 Mon Sep 17 00:00:00 2001 From: Francisco Figueiredo Jr Date: Fri, 30 Jun 2017 16:29:58 -0300 Subject: [PATCH] Add fast scrolling to cards listing If the user wanted to scroll to the end of the card lists in a fast way, she would need to make a lot of flings. Now this is possible with a fast scroller. Thanks to https://github.com/L4Digital/FastScroll project Fix #43 --- app/build.gradle | 2 ++ .../vampidroid/CryptCardsListViewAdapter.java | 11 ++++++++- .../LibraryCardsListViewAdapter.java | 11 ++++++++- .../name/vampidroid/ViewPagerAdapter.java | 10 +++++--- .../main/res/layout/fragment_cards_list.xml | 23 +++++++++++++++---- 5 files changed, 48 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 65c8011..bdbc528 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,4 +62,6 @@ dependencies { compile 'com.jsibbold:zoomage:1.0.0' compile 'net.opacapp:multiline-collapsingtoolbar:1.3.1' + + compile 'com.l4digital.fastscroll:fastscroll:1.0.4' } diff --git a/app/src/main/java/name/vampidroid/CryptCardsListViewAdapter.java b/app/src/main/java/name/vampidroid/CryptCardsListViewAdapter.java index 9a1e85e..20e997a 100644 --- a/app/src/main/java/name/vampidroid/CryptCardsListViewAdapter.java +++ b/app/src/main/java/name/vampidroid/CryptCardsListViewAdapter.java @@ -15,11 +15,15 @@ import android.widget.ImageView; import android.widget.TextView; +import com.l4digital.fastscroll.FastScroller; + /** * Created by fxjr on 17/03/16. */ -public class CryptCardsListViewAdapter extends CursorRecyclerAdapter { +public class CryptCardsListViewAdapter extends CursorRecyclerAdapter + implements FastScroller.SectionIndexer +{ View.OnClickListener editDeckListener = new View.OnClickListener() { @@ -66,6 +70,11 @@ public void onBindViewHolderCursor(ViewHolder viewHolder, Cursor cursor) { Utils.loadCardImageThumbnail(viewHolder.imageViewCardImage, Utils.getCardFileName(cardName, viewHolder.txtCardAdv.length() > 0), R.drawable.gold_back); } + @Override + public String getSectionText(int position) { + return getCursor().getString(1).substring(0, 1); + } + // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder diff --git a/app/src/main/java/name/vampidroid/LibraryCardsListViewAdapter.java b/app/src/main/java/name/vampidroid/LibraryCardsListViewAdapter.java index b703a78..64fd012 100644 --- a/app/src/main/java/name/vampidroid/LibraryCardsListViewAdapter.java +++ b/app/src/main/java/name/vampidroid/LibraryCardsListViewAdapter.java @@ -13,10 +13,14 @@ import android.widget.ImageView; import android.widget.TextView; +import com.l4digital.fastscroll.FastScroller; + /** * Created by fxjr on 17/03/16. */ -public class LibraryCardsListViewAdapter extends CursorRecyclerAdapter { +public class LibraryCardsListViewAdapter extends CursorRecyclerAdapter + implements FastScroller.SectionIndexer +{ public LibraryCardsListViewAdapter(Context context, Cursor cursor) { @@ -66,6 +70,11 @@ public void onBindViewHolderCursor(ViewHolder viewHolder, Cursor cursor) { } + @Override + public String getSectionText(int position) { + return getCursor().getString(1).substring(0, 1); + } + // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder diff --git a/app/src/main/java/name/vampidroid/ViewPagerAdapter.java b/app/src/main/java/name/vampidroid/ViewPagerAdapter.java index 00ccfa2..e1b3d68 100644 --- a/app/src/main/java/name/vampidroid/ViewPagerAdapter.java +++ b/app/src/main/java/name/vampidroid/ViewPagerAdapter.java @@ -43,7 +43,11 @@ public boolean isViewFromObject(View view, Object object) { @Override public Object instantiateItem(ViewGroup container, int position) { - RecyclerView recyclerView = (RecyclerView) LayoutInflater.from(context).inflate(R.layout.fragment_cards_list, container, false); + View v = LayoutInflater.from(context).inflate(R.layout.fragment_cards_list, container, false); + + + RecyclerView recyclerView = v.findViewById(R.id.my_recycler_view); + // use this setting to improve performance if you know that changes // in content do not change the layout size of the RecyclerView @@ -56,9 +60,9 @@ public Object instantiateItem(ViewGroup container, int position) { recyclerView.setAdapter(recyclerViewsAdapters[position]); - container.addView(recyclerView); + container.addView(v); - return recyclerView; + return v; } diff --git a/app/src/main/res/layout/fragment_cards_list.xml b/app/src/main/res/layout/fragment_cards_list.xml index 82244e8..5111775 100644 --- a/app/src/main/res/layout/fragment_cards_list.xml +++ b/app/src/main/res/layout/fragment_cards_list.xml @@ -1,7 +1,22 @@ - \ No newline at end of file + android:layout_height="match_parent"> + + + + \ No newline at end of file