Add fast scroller for MultiRedditListingActivity and FollowedUsersListingFragment.

This commit is contained in:
Alex Ning 2020-04-15 22:35:24 +08:00
parent 90fa50f5d1
commit 784d57933d
4 changed files with 38 additions and 2 deletions

View File

@ -36,6 +36,7 @@ import javax.inject.Named;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
import ml.docilealligator.infinityforreddit.Adapter.MultiRedditListingRecyclerViewAdapter; import ml.docilealligator.infinityforreddit.Adapter.MultiRedditListingRecyclerViewAdapter;
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask; import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
import ml.docilealligator.infinityforreddit.AsyncTask.InsertMultiRedditAsyncTask; import ml.docilealligator.infinityforreddit.AsyncTask.InsertMultiRedditAsyncTask;
@ -179,6 +180,7 @@ public class MultiRedditListingActivity extends BaseActivity {
} }
} }
}); });
new FastScrollerBuilder(mRecyclerView).build();
mMultiRedditViewModel = new ViewModelProvider(this, mMultiRedditViewModel = new ViewModelProvider(this,
new MultiRedditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName)) new MultiRedditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName))

View File

@ -21,6 +21,7 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation; import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import me.zhanghai.android.fastscroll.PopupTextProvider;
import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity; import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.FavoriteThing; import ml.docilealligator.infinityforreddit.FavoriteThing;
@ -30,7 +31,7 @@ import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUse
import pl.droidsonroids.gif.GifImageView; import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit; import retrofit2.Retrofit;
public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements PopupTextProvider {
private static final int VIEW_TYPE_FAVORITE_USER_DIVIDER = 0; 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_FAVORITE_USER = 1;
private static final int VIEW_TYPE_USER_DIVIDER = 2; private static final int VIEW_TYPE_USER_DIVIDER = 2;
@ -289,6 +290,21 @@ public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
notifyDataSetChanged(); notifyDataSetChanged();
} }
@NonNull
@Override
public String getPopupText(int position) {
switch (getItemViewType(position)) {
case VIEW_TYPE_USER_DIVIDER:
int offset = (mFavoriteSubscribedUserData != null && mFavoriteSubscribedUserData.size() > 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 { class FavoriteUserViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.thing_icon_gif_image_view_item_subscribed_thing) @BindView(R.id.thing_icon_gif_image_view_item_subscribed_thing)
GifImageView iconGifImageView; GifImageView iconGifImageView;

View File

@ -22,6 +22,7 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation; import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import me.zhanghai.android.fastscroll.PopupTextProvider;
import ml.docilealligator.infinityforreddit.Activity.ViewMultiRedditDetailActivity; import ml.docilealligator.infinityforreddit.Activity.ViewMultiRedditDetailActivity;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper; import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.Fragment.MultiRedditOptionsBottomSheetFragment; import ml.docilealligator.infinityforreddit.Fragment.MultiRedditOptionsBottomSheetFragment;
@ -32,7 +33,7 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import pl.droidsonroids.gif.GifImageView; import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit; import retrofit2.Retrofit;
public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements PopupTextProvider {
private static final int VIEW_TYPE_FAVORITE_MULTI_REDDIT_DIVIDER = 0; private static final int VIEW_TYPE_FAVORITE_MULTI_REDDIT_DIVIDER = 0;
private static final int VIEW_TYPE_FAVORITE_MULTI_REDDIT = 1; private static final int VIEW_TYPE_FAVORITE_MULTI_REDDIT = 1;
@ -328,6 +329,21 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
notifyDataSetChanged(); 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 { class MultiRedditViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.multi_reddit_icon_gif_image_view_item_multi_reddit) @BindView(R.id.multi_reddit_icon_gif_image_view_item_multi_reddit)
GifImageView iconImageView; GifImageView iconImageView;

View File

@ -29,6 +29,7 @@ import javax.inject.Named;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
import ml.docilealligator.infinityforreddit.Activity.BaseActivity; import ml.docilealligator.infinityforreddit.Activity.BaseActivity;
import ml.docilealligator.infinityforreddit.Activity.SubscribedThingListingActivity; import ml.docilealligator.infinityforreddit.Activity.SubscribedThingListingActivity;
import ml.docilealligator.infinityforreddit.Adapter.FollowedUsersRecyclerViewAdapter; import ml.docilealligator.infinityforreddit.Adapter.FollowedUsersRecyclerViewAdapter;
@ -108,6 +109,7 @@ public class FollowedUsersListingFragment extends Fragment implements FragmentCo
mOauthRetrofit, mRedditDataRoomDatabase, customThemeWrapper, mOauthRetrofit, mRedditDataRoomDatabase, customThemeWrapper,
getArguments().getString(EXTRA_ACCESS_TOKEN)); getArguments().getString(EXTRA_ACCESS_TOKEN));
mRecyclerView.setAdapter(adapter); mRecyclerView.setAdapter(adapter);
new FastScrollerBuilder(mRecyclerView).build();
mSubscribedUserViewModel = new ViewModelProvider(this, mSubscribedUserViewModel = new ViewModelProvider(this,
new SubscribedUserViewModel.Factory(mActivity.getApplication(), mRedditDataRoomDatabase, getArguments().getString(EXTRA_ACCOUNT_NAME))) new SubscribedUserViewModel.Factory(mActivity.getApplication(), mRedditDataRoomDatabase, getArguments().getString(EXTRA_ACCOUNT_NAME)))