From 784d57933ddcc0db075092e4ae9f5da455a66230 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Wed, 15 Apr 2020 22:35:24 +0800 Subject: [PATCH] Add fast scroller for MultiRedditListingActivity and FollowedUsersListingFragment. --- .../Activity/MultiRedditListingActivity.java | 2 ++ .../FollowedUsersRecyclerViewAdapter.java | 18 +++++++++++++++++- .../MultiRedditListingRecyclerViewAdapter.java | 18 +++++++++++++++++- .../Fragment/FollowedUsersListingFragment.java | 2 ++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MultiRedditListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MultiRedditListingActivity.java index b1d2890d..2ef1d14f 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MultiRedditListingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MultiRedditListingActivity.java @@ -36,6 +36,7 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; +import me.zhanghai.android.fastscroll.FastScrollerBuilder; import ml.docilealligator.infinityforreddit.Adapter.MultiRedditListingRecyclerViewAdapter; import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask; import ml.docilealligator.infinityforreddit.AsyncTask.InsertMultiRedditAsyncTask; @@ -179,6 +180,7 @@ public class MultiRedditListingActivity extends BaseActivity { } } }); + new FastScrollerBuilder(mRecyclerView).build(); mMultiRedditViewModel = new ViewModelProvider(this, new MultiRedditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName)) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/FollowedUsersRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/FollowedUsersRecyclerViewAdapter.java index dd5c8be1..a60cf1e1 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/FollowedUsersRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/FollowedUsersRecyclerViewAdapter.java @@ -21,6 +21,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import jp.wasabeef.glide.transformations.RoundedCornersTransformation; +import me.zhanghai.android.fastscroll.PopupTextProvider; import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity; import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.FavoriteThing; @@ -30,7 +31,7 @@ import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUse import pl.droidsonroids.gif.GifImageView; import retrofit2.Retrofit; -public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter { +public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter implements PopupTextProvider { private static final int VIEW_TYPE_FAVORITE_USER_DIVIDER = 0; private static final int VIEW_TYPE_FAVORITE_USER = 1; private static final int VIEW_TYPE_USER_DIVIDER = 2; @@ -289,6 +290,21 @@ public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter 0) ? + mFavoriteSubscribedUserData.size() + 2 : 0; + return mSubscribedUserData.get(position - offset).getName().substring(0, 1).toUpperCase(); + case VIEW_TYPE_FAVORITE_USER: + return mFavoriteSubscribedUserData.get(position - 1).getName().substring(0, 1).toUpperCase(); + default: + return ""; + } + } + class FavoriteUserViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.thing_icon_gif_image_view_item_subscribed_thing) GifImageView iconGifImageView; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MultiRedditListingRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MultiRedditListingRecyclerViewAdapter.java index 8d99220e..7ededb6d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MultiRedditListingRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/MultiRedditListingRecyclerViewAdapter.java @@ -22,6 +22,7 @@ import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import jp.wasabeef.glide.transformations.RoundedCornersTransformation; +import me.zhanghai.android.fastscroll.PopupTextProvider; import ml.docilealligator.infinityforreddit.Activity.ViewMultiRedditDetailActivity; import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.Fragment.MultiRedditOptionsBottomSheetFragment; @@ -32,7 +33,7 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase; import pl.droidsonroids.gif.GifImageView; import retrofit2.Retrofit; -public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter { +public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter implements PopupTextProvider { private static final int VIEW_TYPE_FAVORITE_MULTI_REDDIT_DIVIDER = 0; private static final int VIEW_TYPE_FAVORITE_MULTI_REDDIT = 1; @@ -328,6 +329,21 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter< notifyDataSetChanged(); } + @NonNull + @Override + public String getPopupText(int position) { + switch (getItemViewType(position)) { + case VIEW_TYPE_MULTI_REDDIT: + int offset = (mFavoriteMultiReddits != null && mFavoriteMultiReddits.size() > 0) ? + mFavoriteMultiReddits.size() + 2 : 0; + return mMultiReddits.get(position - offset).getDisplayName().substring(0, 1).toUpperCase(); + case VIEW_TYPE_FAVORITE_MULTI_REDDIT: + return mFavoriteMultiReddits.get(position - 1).getDisplayName().substring(0, 1).toUpperCase(); + default: + return ""; + } + } + class MultiRedditViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.multi_reddit_icon_gif_image_view_item_multi_reddit) GifImageView iconImageView; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/FollowedUsersListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/FollowedUsersListingFragment.java index acee318a..f34dee6c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/FollowedUsersListingFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/FollowedUsersListingFragment.java @@ -29,6 +29,7 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; +import me.zhanghai.android.fastscroll.FastScrollerBuilder; import ml.docilealligator.infinityforreddit.Activity.BaseActivity; import ml.docilealligator.infinityforreddit.Activity.SubscribedThingListingActivity; import ml.docilealligator.infinityforreddit.Adapter.FollowedUsersRecyclerViewAdapter; @@ -108,6 +109,7 @@ public class FollowedUsersListingFragment extends Fragment implements FragmentCo mOauthRetrofit, mRedditDataRoomDatabase, customThemeWrapper, getArguments().getString(EXTRA_ACCESS_TOKEN)); mRecyclerView.setAdapter(adapter); + new FastScrollerBuilder(mRecyclerView).build(); mSubscribedUserViewModel = new ViewModelProvider(this, new SubscribedUserViewModel.Factory(mActivity.getApplication(), mRedditDataRoomDatabase, getArguments().getString(EXTRA_ACCOUNT_NAME)))