diff options
author | Alex Ning <chineseperson5@gmail.com> | 2020-02-19 01:59:12 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2020-02-19 01:59:12 +0000 |
commit | 248aca0fb9f64eb66ec6214f60f51be3de181899 (patch) | |
tree | 550a9d106941fc64513f273a81141bfe0f283af6 /app/src/main | |
parent | 8c454d52c7c55af04c52d07bab5d16355d159406 (diff) | |
download | infinity-for-reddit-248aca0fb9f64eb66ec6214f60f51be3de181899.tar infinity-for-reddit-248aca0fb9f64eb66ec6214f60f51be3de181899.tar.gz infinity-for-reddit-248aca0fb9f64eb66ec6214f60f51be3de181899.tar.bz2 infinity-for-reddit-248aca0fb9f64eb66ec6214f60f51be3de181899.tar.lz infinity-for-reddit-248aca0fb9f64eb66ec6214f60f51be3de181899.tar.xz infinity-for-reddit-248aca0fb9f64eb66ec6214f60f51be3de181899.tar.zst infinity-for-reddit-248aca0fb9f64eb66ec6214f60f51be3de181899.zip |
Start implementing showing subscribed subreddits in the nav drawer. Use a RecyclerView to display all the items in the nav drawer.
Diffstat (limited to '')
7 files changed, 401 insertions, 36 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java index 862ab95d..4480124a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java @@ -18,16 +18,13 @@ import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; -import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBarDrawerToggle; -import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.Toolbar; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.view.GravityCompat; -import androidx.core.widget.NestedScrollView; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -44,7 +41,6 @@ import androidx.work.WorkManager; import com.bumptech.glide.Glide; import com.bumptech.glide.RequestManager; -import com.bumptech.glide.request.RequestOptions; import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.bottomappbar.BottomAppBar; @@ -63,15 +59,12 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; -import jp.wasabeef.glide.transformations.RoundedCornersTransformation; -import ml.docilealligator.infinityforreddit.Account.Account; import ml.docilealligator.infinityforreddit.Account.AccountViewModel; -import ml.docilealligator.infinityforreddit.Adapter.AccountRecyclerViewAdapter; +import ml.docilealligator.infinityforreddit.Adapter.NavigationDrawerRecyclerViewAdapter; import ml.docilealligator.infinityforreddit.AppBarStateChangeListener; import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask; import ml.docilealligator.infinityforreddit.AsyncTask.InsertSubscribedThingsAsyncTask; import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask; -import ml.docilealligator.infinityforreddit.AsyncTask.SwitchToAnonymousAccountAsyncTask; import ml.docilealligator.infinityforreddit.Event.ChangeConfirmToExitEvent; import ml.docilealligator.infinityforreddit.Event.ChangeLockBottomAppBarEvent; import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent; @@ -95,14 +88,11 @@ import ml.docilealligator.infinityforreddit.SortType; import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback; import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData; import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData; +import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditViewModel; import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData; import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils; -import pl.droidsonroids.gif.GifImageView; import retrofit2.Retrofit; -import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO; -import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES; - public class MainActivity extends BaseActivity implements SortTypeSelectionCallback, PostTypeBottomSheetFragment.PostTypeSelectionCallback, PostLayoutBottomSheetFragment.PostLayoutSelectionCallback { @@ -137,7 +127,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb CollapsingToolbarLayout collapsingToolbarLayout; @BindView(R.id.toolbar) Toolbar toolbar; - @BindView(R.id.nested_scroll_view_main_activity) + @BindView(R.id.nav_drawer_recycler_view_main_activity) + RecyclerView navDrawerRecyclerView; + /*@BindView(R.id.nested_scroll_view_main_activity) NestedScrollView nestedScrollView; @BindView(R.id.all_drawer_items_linear_layout_main_activity) LinearLayout allDrawerItemsLinearLayout; @@ -170,7 +162,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb @BindView(R.id.settings_text_view_main_activity) TextView settingsTextView; @BindView(R.id.account_recycler_view_main_activity) - RecyclerView accountRecyclerView; + RecyclerView accountRecyclerView;*/ @BindView(R.id.tab_layout_main_activity) TabLayout tabLayout; @BindView(R.id.bottom_navigation_main_activity) @@ -187,6 +179,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb ImageView profileBottomAppBar; @BindView(R.id.fab_main_activity) FloatingActionButton fab; + SubscribedSubredditViewModel subscribedSubredditViewModel; AccountViewModel accountViewModel; @Inject @Named("oauth") @@ -196,11 +189,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb @Inject SharedPreferences mSharedPreferences; private SectionsPagerAdapter sectionsPagerAdapter; - private TextView mAccountNameTextView; + /*private TextView mAccountNameTextView; private TextView mKarmaTextView; private GifImageView mProfileImageView; private ImageView mBannerImageView; - private ImageView mDropIconImageView; + private ImageView mDropIconImageView;*/ private RequestManager glide; private AppBarLayout.LayoutParams params; private PostTypeBottomSheetFragment postTypeBottomSheetFragment; @@ -208,6 +201,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb private SortTypeBottomSheetFragment popularAndAllSortTypeBottomSheetFragment; private SortTimeBottomSheetFragment sortTimeBottomSheetFragment; private PostLayoutBottomSheetFragment postLayoutBottomSheetFragment; + private NavigationDrawerRecyclerViewAdapter adapter; private boolean mNullAccessToken = false; private String mAccessToken; private String mAccountName; @@ -292,7 +286,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb int navBarHeight = resources.getDimensionPixelSize(navBarResourceId); linearLayoutBottomAppBar.setPadding(0, (int) (6 * resources.getDisplayMetrics().density), 0, navBarHeight); - nestedScrollView.setPadding(0, 0, 0, navBarHeight); + //nestedScrollView.setPadding(0, 0, 0, navBarHeight); + navDrawerRecyclerView.setPadding(0, 0, 0, navBarHeight); } } } @@ -502,6 +497,10 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb fab.setVisibility(View.VISIBLE); } + adapter = new NavigationDrawerRecyclerViewAdapter(this, mAccountName, mProfileImageUrl, mBannerImageUrl, mKarma); + navDrawerRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + navDrawerRecyclerView.setAdapter(adapter); + sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(sectionsPagerAdapter); viewPager.setOffscreenPageLimit(3); @@ -538,7 +537,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb glide = Glide.with(this); - AccountRecyclerViewAdapter adapter = new AccountRecyclerViewAdapter(this, glide, mAccountName, + /*AccountRecyclerViewAdapter adapter = new AccountRecyclerViewAdapter(this, glide, mAccountName, new AccountRecyclerViewAdapter.ItemSelectedListener() { @Override public void accountSelected(Account account) { @@ -574,11 +573,17 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb finish(); }).execute(); } - }); + });*/ - accountRecyclerView.setLayoutManager(new LinearLayoutManager(this)); + /*accountRecyclerView.setLayoutManager(new LinearLayoutManager(this)); accountRecyclerView.setNestedScrollingEnabled(false); - accountRecyclerView.setAdapter(adapter); + accountRecyclerView.setAdapter(adapter);*/ + + subscribedSubredditViewModel = new ViewModelProvider(this, + new SubscribedSubredditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName)) + .get(SubscribedSubredditViewModel.class); + subscribedSubredditViewModel.getAllSubscribedSubreddits().observe(this, + subscribedSubredditData -> adapter.setSubscribedSubreddits(subscribedSubredditData)); accountViewModel = new ViewModelProvider(this, new AccountViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName)).get(AccountViewModel.class); @@ -593,7 +598,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } } - View header = findViewById(R.id.nav_header_main_activity); + /*View header = findViewById(R.id.nav_header_main_activity); mAccountNameTextView = header.findViewById(R.id.name_text_view_nav_header_main); mKarmaTextView = header.findViewById(R.id.karma_text_view_nav_header_main); mProfileImageView = header.findViewById(R.id.profile_image_view_nav_header_main); @@ -622,13 +627,13 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb accountRecyclerView.setVisibility(View.VISIBLE); allDrawerItemsLinearLayout.setVisibility(View.GONE); } - }); + });*/ loadUserData(); if (mAccessToken != null) { - mKarmaTextView.setText(getString(R.string.karma_info, mKarma)); - mAccountNameTextView.setText(mAccountName); + /*mKarmaTextView.setText(getString(R.string.karma_info, mKarma)); + mAccountNameTextView.setText(mAccountName);*/ if (mMessageFullname != null) { ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() { @Override @@ -643,7 +648,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb }); } } else { - mKarmaTextView.setText(R.string.press_here_to_login); + /*mKarmaTextView.setText(R.string.press_here_to_login); mAccountNameTextView.setText(R.string.anonymous_account); accountLabelTextView.setVisibility(View.GONE); profileTextView.setVisibility(View.GONE); @@ -656,10 +661,10 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb hiddenTextView.setVisibility(View.GONE); savedTextView.setVisibility(View.GONE); gildedTextView.setVisibility(View.GONE); - divider.setVisibility(View.GONE); + divider.setVisibility(View.GONE);*/ } - if (mProfileImageUrl != null && !mProfileImageUrl.equals("")) { + /*if (mProfileImageUrl != null && !mProfileImageUrl.equals("")) { glide.load(mProfileImageUrl) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(144, 0))) .error(glide.load(R.drawable.subreddit_default_icon) @@ -673,9 +678,9 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb if (mBannerImageUrl != null && !mBannerImageUrl.equals("")) { glide.load(mBannerImageUrl).into(mBannerImageView); - } + }*/ - profileTextView.setOnClickListener(view -> { + /*profileTextView.setOnClickListener(view -> { Intent intent = new Intent(this, ViewUserDetailActivity.class); intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName); startActivity(intent); @@ -766,7 +771,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb drawer.closeDrawers(); Intent intent = new Intent(MainActivity.this, SettingsActivity.class); startActivity(intent); - }); + });*/ } private void loadSubscriptions() { @@ -804,7 +809,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb ParseAndSaveAccountInfo.parseAndSaveAccountInfo(response, mRedditDataRoomDatabase, new ParseAndSaveAccountInfo.ParseAndSaveAccountInfoListener() { @Override public void onParseMyInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma) { - mAccountNameTextView.setText(name); + /*mAccountNameTextView.setText(name); if (profileImageUrl != null && !profileImageUrl.equals("")) { glide.load(profileImageUrl) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0))) @@ -818,14 +823,14 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb } if (bannerImageUrl != null && !bannerImageUrl.equals("")) { glide.load(bannerImageUrl).into(mBannerImageView); - } + }*/ mAccountName = name; mProfileImageUrl = profileImageUrl; mBannerImageUrl = bannerImageUrl; mKarma = karma; - mKarmaTextView.setText(getString(R.string.karma_info, karma)); + //mKarmaTextView.setText(getString(R.string.karma_info, karma)); mFetchUserInfoSuccess = true; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/NavigationDrawerRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/NavigationDrawerRecyclerViewAdapter.java new file mode 100644 index 00000000..63069e9e --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Adapter/NavigationDrawerRecyclerViewAdapter.java @@ -0,0 +1,302 @@ +package ml.docilealligator.infinityforreddit.Adapter; + +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.RequestManager; +import com.bumptech.glide.request.RequestOptions; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; +import jp.wasabeef.glide.transformations.RoundedCornersTransformation; +import ml.docilealligator.infinityforreddit.Account.Account; +import ml.docilealligator.infinityforreddit.R; +import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData; +import pl.droidsonroids.gif.GifImageView; + +public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { + private static final int VIEW_TYPE_NAV_HEADER = 0; + private static final int VIEW_TYPE_MENU_GROUP_TITLE = 1; + private static final int VIEW_TYPE_MENU_ITEM = 2; + private static final int VIEW_TYPE_DIVIDER = 3; + private static final int VIEW_TYPE_SUBSCRIBED_SUBREDDIT = 4; + private static final int CURRENT_MENU_ITEMS = 15; + + private Context context; + private Resources resources; + private RequestManager glide; + private String accountName; + private String userIconUrl; + private String userBannerUrl; + private int karma; + private boolean isLoggedIn; + private boolean isInMainPage = true; + private ArrayList<SubscribedSubredditData> subscribedSubreddits; + + public NavigationDrawerRecyclerViewAdapter(Context context, String accountName, String userIconUrl, + String userBannerUrl, int karma) { + this.context = context; + resources = context.getResources(); + glide = Glide.with(context); + this.accountName = accountName; + this.userIconUrl = userIconUrl; + this.userBannerUrl = userBannerUrl; + this.karma = karma; + isLoggedIn = accountName != null; + } + + @Override + public int getItemViewType(int position) { + if (isLoggedIn) { + if (position >= 15) { + return VIEW_TYPE_SUBSCRIBED_SUBREDDIT; + } else if (position == 0) { + return VIEW_TYPE_NAV_HEADER; + } else if (position == 1 || position == 6) { + return VIEW_TYPE_MENU_GROUP_TITLE; + } else if (position == 12) { + return VIEW_TYPE_DIVIDER; + } else { + return VIEW_TYPE_MENU_ITEM; + } + } else { + if (position == 0) { + return VIEW_TYPE_NAV_HEADER; + } else { + return VIEW_TYPE_MENU_ITEM; + } + } + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + switch (viewType) { + case VIEW_TYPE_NAV_HEADER: + return new NavHeaderViewHolder(LayoutInflater.from(parent.getContext()) + .inflate(R.layout.nav_header_main, parent, false)); + case VIEW_TYPE_MENU_GROUP_TITLE: + return new MenuGroupTitleViewHolder(LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_nav_drawer_menu_group_title, parent, false)); + case VIEW_TYPE_MENU_ITEM: + return new MenuItemViewHolder(LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_nav_drawer_menu_item, parent, false)); + case VIEW_TYPE_DIVIDER: + return new DividerViewHolder(LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_nav_drawer_divider, parent, false)); + default: + return new SubscribedThingViewHolder(LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_nav_drawer_subscribed_thing, parent, false)); + } + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder instanceof NavHeaderViewHolder) { + if (isLoggedIn) { + ((NavHeaderViewHolder) holder).karmaTextView.setText(context.getString(R.string.karma_info, karma)); + ((NavHeaderViewHolder) holder).accountNameTextView.setText(accountName); + if (userIconUrl != null && !userIconUrl.equals("")) { + glide.load(userIconUrl) + .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(144, 0))) + .error(glide.load(R.drawable.subreddit_default_icon) + .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(144, 0)))) + .into(((NavHeaderViewHolder) holder).profileImageView); + } else { + glide.load(R.drawable.subreddit_default_icon) + .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(144, 0))) + .into(((NavHeaderViewHolder) holder).profileImageView); + } + + if (userBannerUrl != null && !userBannerUrl.equals("")) { + glide.load(userBannerUrl).into(((NavHeaderViewHolder) holder).bannerImageView); + } + } else { + ((NavHeaderViewHolder) holder).karmaTextView.setText(R.string.press_here_to_login); + ((NavHeaderViewHolder) holder).accountNameTextView.setText(R.string.anonymous_account); + } + + if (isInMainPage) { + ((NavHeaderViewHolder) holder).dropIconImageView.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_arrow_drop_down_24px)); + } else { + ((NavHeaderViewHolder) holder).dropIconImageView.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_arrow_drop_up_24px)); + } + + ((NavHeaderViewHolder) holder).itemView.setOnClickListener(view -> { + if (isInMainPage) { + isInMainPage = false; + ((NavHeaderViewHolder) holder).dropIconImageView.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_arrow_drop_up_24px)); + } else { + isInMainPage = true; + ((NavHeaderViewHolder) holder).dropIconImageView.setImageDrawable(resources.getDrawable(R.drawable.ic_baseline_arrow_drop_down_24px)); + } + }); + } else if (holder instanceof MenuGroupTitleViewHolder) { + if (position == 1) { + ((MenuGroupTitleViewHolder) holder).titleTextView.setText(R.string.label_account); + } else if (position == 6) { + ((MenuGroupTitleViewHolder) holder).titleTextView.setText(R.string.label_post); + } + } else if (holder instanceof MenuItemViewHolder) { + int stringId = 0; + int drawableId = 0; + + switch (position) { + case 2: + stringId = R.string.profile; + drawableId = R.drawable.ic_account_circle_24dp; + break; + case 3: + stringId = R.string.subscriptions; + drawableId = R.drawable.ic_subscritptions_bottom_app_bar_24dp; + break; + case 4: + stringId = R.string.multi_reddit; + drawableId = R.drawable.ic_multi_reddit_24dp; + break; + case 5: + stringId = R.string.inbox; + drawableId = R.drawable.ic_inbox_24dp; + break; + case 7: + stringId = R.string.upvoted; + drawableId = R.drawable.ic_arrow_upward_black_24dp; + break; + case 8: + stringId = R.string.downvoted; + drawableId = R.drawable.ic_arrow_downward_black_24dp; + break; + case 9: + stringId = R.string.hidden; + drawableId = R.drawable.ic_outline_lock_24dp; + break; + case 10: + stringId = R.string.saved; + drawableId = R.drawable.ic_outline_bookmarks_24dp; + break; + case 11: + stringId = R.string.gilded; + drawableId = R.drawable.ic_star_border_24dp; + break; + case 13: + if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) { + stringId = R.string.dark_theme; + drawableId = R.drawable.ic_dark_theme_24dp; + } else { + stringId = R.string.light_theme; + drawableId = R.drawable.ic_light_theme_24dp; + } + break; + case 14: + stringId = R.string.settings; + drawableId = R.drawable.ic_settings_24dp; + break; + } + + ((MenuItemViewHolder) holder).menuTextView.setText(stringId); + ((MenuItemViewHolder) holder).menuTextView.setCompoundDrawablesWithIntrinsicBounds( + drawableId, 0, 0, 0); + } else if (holder instanceof SubscribedThingViewHolder) { + SubscribedSubredditData subreddit = subscribedSubreddits.get(position - CURRENT_MENU_ITEMS); + ((SubscribedThingViewHolder) holder).subredditNameTextView.setText(subreddit.getName()); + String iconUrl = subreddit.getIconUrl(); + if (iconUrl != null && !iconUrl.equals("")) { + glide.load(iconUrl) + .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) + .error(glide.load(R.drawable.subreddit_default_icon) + .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))) + .into(((SubscribedThingViewHolder) holder).iconGifImageView); + } else { + glide.load(R.drawable.subreddit_default_icon) + .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) + .into(((SubscribedThingViewHolder) holder).iconGifImageView); + } + } + } + + @Override + public int getItemCount() { + if (subscribedSubreddits != null) { + return CURRENT_MENU_ITEMS + subscribedSubreddits.size(); + } + + return CURRENT_MENU_ITEMS; + } + + public void setSubscribedSubreddits(List<SubscribedSubredditData> subscribedSubreddits) { + this.subscribedSubreddits = (ArrayList<SubscribedSubredditData>) subscribedSubreddits; + notifyDataSetChanged(); + } + + public void changeAccountsDataset(List<Account> accounts) { + + } + + class NavHeaderViewHolder extends RecyclerView.ViewHolder { + @BindView(R.id.name_text_view_nav_header_main) + TextView accountNameTextView; + @BindView(R.id.karma_text_view_nav_header_main) + TextView karmaTextView; + @BindView(R.id.profile_image_view_nav_header_main) + GifImageView profileImageView; + @BindView(R.id.banner_image_view_nav_header_main) + ImageView bannerImageView; + @BindView(R.id.account_switcher_image_view_nav_header_main) + ImageView dropIconImageView; + + public NavHeaderViewHolder(@NonNull View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } + } + + class MenuGroupTitleViewHolder extends RecyclerView.ViewHolder { + TextView titleTextView; + + MenuGroupTitleViewHolder(@NonNull View itemView) { + super(itemView); + titleTextView = (TextView) itemView; + } + } + + class MenuItemViewHolder extends RecyclerView.ViewHolder { + TextView menuTextView; + + MenuItemViewHolder(@NonNull View itemView) { + super(itemView); + menuTextView = (TextView) itemView; + } + } + + class DividerViewHolder extends RecyclerView.ViewHolder { + + DividerViewHolder(@NonNull View itemView) { + super(itemView); + } + } + + class SubscribedThingViewHolder extends RecyclerView.ViewHolder { + @BindView(R.id.thing_icon_gif_image_view_item_nav_drawer_subscribed_thing) + GifImageView iconGifImageView; + @BindView(R.id.thing_name_text_view_item_nav_drawer_subscribed_thing) + TextView subredditNameTextView; + + SubscribedThingViewHolder(@NonNull View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 798dd9c3..a47d4fc8 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -20,7 +20,14 @@ android:layout_gravity="start" android:background="?attr/backgroundColor"> - <androidx.core.widget.NestedScrollView + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/nav_drawer_recycler_view_main_activity" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:scrollbars="vertical" + android:clipToPadding="false" /> + + <!--<androidx.core.widget.NestedScrollView android:id="@+id/nested_scroll_view_main_activity" android:layout_width="match_parent" android:layout_height="match_parent" @@ -237,7 +244,7 @@ </LinearLayout> - </androidx.core.widget.NestedScrollView> + </androidx.core.widget.NestedScrollView>--> </com.google.android.material.navigation.NavigationView> diff --git a/app/src/main/res/layout/item_nav_drawer_divider.xml b/app/src/main/res/layout/item_nav_drawer_divider.xml new file mode 100644 index 00000000..c0e73dff --- /dev/null +++ b/app/src/main/res/layout/item_nav_drawer_divider.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<View xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="@color/dividerColor" />
\ No newline at end of file diff --git a/app/src/main/res/layout/item_nav_drawer_menu_group_title.xml b/app/src/main/res/layout/item_nav_drawer_menu_group_title.xml new file mode 100644 index 00000000..5db89c04 --- /dev/null +++ b/app/src/main/res/layout/item_nav_drawer_menu_group_title.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="16dp" + android:text="@string/label_post" + android:textSize="?attr/font_default" />
\ No newline at end of file diff --git a/app/src/main/res/layout/item_nav_drawer_menu_item.xml b/app/src/main/res/layout/item_nav_drawer_menu_item.xml new file mode 100644 index 00000000..4e9f911f --- /dev/null +++ b/app/src/main/res/layout/item_nav_drawer_menu_item.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?attr/selectableItemBackground" + android:clickable="true" + android:drawablePadding="32dp" + android:focusable="true" + android:gravity="center_vertical" + android:padding="16dp" + android:textColor="@color/primaryTextColor" + android:textSize="?attr/font_default" />
\ No newline at end of file diff --git a/app/src/main/res/layout/item_nav_drawer_subscribed_thing.xml b/app/src/main/res/layout/item_nav_drawer_subscribed_thing.xml new file mode 100644 index 00000000..0dc934fe --- /dev/null +++ b/app/src/main/res/layout/item_nav_drawer_subscribed_thing.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="16dp" + android:clickable="true" + android:focusable="true" + android:background="?attr/selectableItemBackground"> + + <pl.droidsonroids.gif.GifImageView + android:id="@+id/thing_icon_gif_image_view_item_nav_drawer_subscribed_thing" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_gravity="center_vertical" + android:layout_marginEnd="32dp" /> + + <TextView + android:id="@+id/thing_name_text_view_item_nav_drawer_subscribed_thing" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/primaryTextColor" + android:textSize="?attr/font_default" + android:layout_gravity="center_vertical" /> + +</LinearLayout>
\ No newline at end of file |