Show r/all posts in MainActivity.

This commit is contained in:
Alex Ning 2019-07-30 08:25:21 +08:00
parent f07f01ce63
commit dc23a30220
2 changed files with 35 additions and 15 deletions

View File

@ -69,7 +69,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
private AppBarLayout.LayoutParams params; private AppBarLayout.LayoutParams params;
private PostTypeBottomSheetFragment postTypeBottomSheetFragment; private PostTypeBottomSheetFragment postTypeBottomSheetFragment;
private SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment; private SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment;
private SortTypeBottomSheetFragment popularSortTypeBottomSheetFragment; private SortTypeBottomSheetFragment popularAndAllSortTypeBottomSheetFragment;
private String mName; private String mName;
private String mProfileImageUrl; private String mProfileImageUrl;
@ -109,10 +109,10 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
bestBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, false); bestBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, false);
bestSortTypeBottomSheetFragment.setArguments(bestBundle); bestSortTypeBottomSheetFragment.setArguments(bestBundle);
popularSortTypeBottomSheetFragment = new SortTypeBottomSheetFragment(); popularAndAllSortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
Bundle popularBundle = new Bundle(); Bundle popularBundle = new Bundle();
popularBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, true); popularBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, true);
popularSortTypeBottomSheetFragment.setArguments(popularBundle); popularAndAllSortTypeBottomSheetFragment.setArguments(popularBundle);
Toolbar toolbar = findViewById(R.id.toolbar); Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
@ -282,8 +282,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
public boolean onOptionsItemSelected(@NonNull MenuItem item) { public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.action_sort_main_activity: case R.id.action_sort_main_activity:
if(viewPager.getCurrentItem() == 1) { if(viewPager.getCurrentItem() == 1 ||viewPager.getCurrentItem() == 2) {
popularSortTypeBottomSheetFragment.show(getSupportFragmentManager(), popularSortTypeBottomSheetFragment.getTag()); popularAndAllSortTypeBottomSheetFragment.show(getSupportFragmentManager(), popularAndAllSortTypeBottomSheetFragment.getTag());
} else { } else {
bestSortTypeBottomSheetFragment.show(getSupportFragmentManager(), bestSortTypeBottomSheetFragment.getTag()); bestSortTypeBottomSheetFragment.show(getSupportFragmentManager(), bestSortTypeBottomSheetFragment.getTag());
} }
@ -364,6 +364,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
private class SectionsPagerAdapter extends FragmentPagerAdapter { private class SectionsPagerAdapter extends FragmentPagerAdapter {
private PostFragment frontPagePostFragment; private PostFragment frontPagePostFragment;
private PostFragment popularPostFragment; private PostFragment popularPostFragment;
private PostFragment allPostFragment;
SectionsPagerAdapter(FragmentManager fm) { SectionsPagerAdapter(FragmentManager fm) {
super(fm); super(fm);
@ -379,19 +380,28 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_BEST); bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_BEST);
fragment.setArguments(bundle); fragment.setArguments(bundle);
return fragment; return fragment;
} else if(position == 1) {
PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, "popular");
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
fragment.setArguments(bundle);
return fragment;
} else {
PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, "all");
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
fragment.setArguments(bundle);
return fragment;
} }
PostFragment fragment = new PostFragment();
Bundle bundle = new Bundle();
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, "popular");
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
fragment.setArguments(bundle);
return fragment;
} }
@Override @Override
public int getCount() { public int getCount() {
return 2; return 3;
} }
@Override @Override
@ -401,6 +411,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
return "Best"; return "Best";
case 1: case 1:
return "Popular"; return "Popular";
case 2:
return "All";
} }
return null; return null;
} }
@ -416,6 +428,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
case 1: case 1:
popularPostFragment = (PostFragment) fragment; popularPostFragment = (PostFragment) fragment;
break; break;
case 2:
allPostFragment = (PostFragment) fragment;
} }
return fragment; return fragment;
} }
@ -428,6 +442,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
case 1: case 1:
popularPostFragment.changeSortType(sortType); popularPostFragment.changeSortType(sortType);
break; break;
case 2:
allPostFragment.changeSortType(sortType);
} }
} }
@ -436,10 +452,14 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
if(frontPagePostFragment != null) { if(frontPagePostFragment != null) {
((FragmentCommunicator) frontPagePostFragment).refresh(); ((FragmentCommunicator) frontPagePostFragment).refresh();
} }
} else { } else if(fragmentPosition == 1) {
if(popularPostFragment != null) { if(popularPostFragment != null) {
((FragmentCommunicator) popularPostFragment).refresh(); ((FragmentCommunicator) popularPostFragment).refresh();
} }
} else {
if(allPostFragment != null) {
((FragmentCommunicator) allPostFragment).refresh();
}
} }
} }
} }

View File

@ -198,7 +198,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
} else if(postType == PostDataSource.TYPE_SUBREDDIT) { } else if(postType == PostDataSource.TYPE_SUBREDDIT) {
String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME); String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME);
boolean displaySubredditName = subredditName.equals("popular"); boolean displaySubredditName = subredditName.equals("popular") || subredditName.equals("all");
mAdapter = new PostRecyclerViewAdapter(activity, mRetrofit, mAdapter = new PostRecyclerViewAdapter(activity, mRetrofit,
mSharedPreferences, postType, displaySubredditName, () -> mPostViewModel.retryLoadingMore()); mSharedPreferences, postType, displaySubredditName, () -> mPostViewModel.retryLoadingMore());