Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.fragment.app.FragmentActivity;
import androidx.palette.graphics.Palette;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
Expand All @@ -41,6 +41,7 @@
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import com.perflyst.twire.R;
import com.perflyst.twire.activities.main.LazyFetchingActivity;
import com.perflyst.twire.adapters.PanelAdapter;
Expand Down Expand Up @@ -69,11 +70,15 @@ public class ChannelActivity extends ThemeActivity {
fragmentVodsBroadCastsOnlyArg = "vodsBroadcastsOnlyArg",
fragmentVodsStreamerInfoArg = "streamerNameArg";
private final int SHOW_FAB_DELAY = 300;
private final static int POSITION_DESC = 0;
private final static int POSITION_BROADCASTS = 1;
private final static int POSITION_HIGHLIGHTS = 2;
private final static int TOTAL_COUNT = 3;
private ChannelInfo info;
private ImageView streamerImage;
private Toolbar toolbar,
additionalToolbar;
private ViewPager mViewPager;
private ViewPager2 mViewPager;
private TabLayout mTabs;
private AppBarLayout mAppBar;
private FloatingActionButton mFab;
Expand Down Expand Up @@ -153,10 +158,23 @@ public void onBackPressed() {

private void setUpTabs() {
assert mViewPager != null;
mViewPager.setAdapter(new SectionsPagerAdapter(getSupportFragmentManager()));
mViewPager.setAdapter(new SectionsPagerAdapter(this));

assert mTabs != null;
mTabs.setupWithViewPager(mViewPager);
new TabLayoutMediator(mTabs, mViewPager, (tab, position) -> {
switch (position) {
default: // Deliberate fall-through to description tab
case POSITION_DESC:
tab.setText(R.string.streamerInfo_desc_tab);
break;
case POSITION_BROADCASTS:
tab.setText(R.string.streamerInfo_broadcasts_tab);
break;
case POSITION_HIGHLIGHTS:
tab.setText(R.string.streamerInfo_highlights_tab);
break;
}
}).attach();

mTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
Expand Down Expand Up @@ -624,48 +642,32 @@ public List<VideoOnDemand> getVisualElements() throws JSONException {
}
}

private class SectionsPagerAdapter extends FragmentPagerAdapter {
private final int POSITION_DESC = 0;
private final int POSITION_BROADCASTS = 1;
private final int POSITION_HIGHLIGHTS = 2;
private class SectionsPagerAdapter extends FragmentStateAdapter {


SectionsPagerAdapter(FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
SectionsPagerAdapter(FragmentActivity fa) {
super(fa);
mDescriptionFragment = InfoFragment.newInstance(info);
mBroadcastsFragment = VodFragment.newInstance(true, info);
mHighlightsFragment = VodFragment.newInstance(false, info);
}

@NonNull
@Override
public Fragment getItem(int position) {
if (position == POSITION_DESC) {
return mDescriptionFragment;
} else if (position == POSITION_BROADCASTS) {
return mBroadcastsFragment;
} else if (position == POSITION_HIGHLIGHTS) {
return mHighlightsFragment;
} else {
return InfoFragment.newInstance(info);
}
}

@Override
public int getCount() {
return 3;
}

@Override
public CharSequence getPageTitle(int position) {
public Fragment createFragment(int position) {
switch (position) {
case POSITION_DESC:
return getResources().getString(R.string.streamerInfo_desc_tab);
default:
case POSITION_DESC: // Deliberate fall-through to description tab
return mDescriptionFragment;
case POSITION_BROADCASTS:
return getResources().getString(R.string.streamerInfo_broadcasts_tab);
return mBroadcastsFragment;
case POSITION_HIGHLIGHTS:
return getResources().getString(R.string.streamerInfo_highlights_tab);
return mHighlightsFragment;
}
return null;
}

@Override
public int getItemCount() {
return TOTAL_COUNT;
}
}
}
67 changes: 34 additions & 33 deletions app/src/main/java/com/perflyst/twire/activities/SearchActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
import android.widget.EditText;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import com.perflyst.twire.R;
import com.perflyst.twire.activities.main.LazyFetchingActivity;
import com.perflyst.twire.adapters.ChannelsAdapter;
Expand Down Expand Up @@ -50,8 +52,12 @@


public class SearchActivity extends ThemeActivity {
private static final int POSITION_STREAMS = 0;
private static final int POSITION_CHANNELS = 1;
private static final int POSITION_GAMES = 2;
private static final int TOTAL_COUNT = 3;
@BindView(R.id.container)
protected ViewPager mViewPager;
protected ViewPager2 mViewPager;
@BindView(R.id.ic_back_arrow)
protected ImageView mBackIcon;
@BindView(R.id.edit_text_search)
Expand Down Expand Up @@ -100,14 +106,26 @@ public void onBackPressed() {
private void setUpTabs() {
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
SectionsPagerAdapter mSectionsPagerAdapter = new SectionsPagerAdapter(this);

// Set up the ViewPager with the sections adapter.
// Set up the ViewPager2 with the sections adapter.
mViewPager.setAdapter(mSectionsPagerAdapter);

TabLayout tabLayout = findViewById(R.id.tabs);
assert tabLayout != null;
tabLayout.setupWithViewPager(mViewPager);
new TabLayoutMediator(tabLayout, mViewPager, (tab, position) -> {
switch (position) {
default: // Deliberate fall-through to stream tab
case POSITION_STREAMS:
tab.setText(R.string.streams_tab);
break;
case POSITION_CHANNELS:
tab.setText(R.string.streamers_tab);
break;
case POSITION_GAMES:
tab.setText(R.string.games_tab);
break;
}
}).attach();
}

public String getQuery() {
Expand Down Expand Up @@ -400,49 +418,32 @@ public void setMaxElementsToFetch(int aMax) {
public abstract MainActivityAdapter<E, ?> constructAdapter();
}

private class SectionsPagerAdapter extends FragmentPagerAdapter {
private final int POSITION_STREAMS = 0;
private final int POSITION_CHANNELS = 1;
private final int POSITION_GAMES = 2;

private class SectionsPagerAdapter extends FragmentStateAdapter {

SectionsPagerAdapter(FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
SectionsPagerAdapter(FragmentActivity fa) {
super(fa);
mStreamsFragment = SearchStreamsFragment.newInstance();
mChannelsFragment = SearchChannelsFragment.newInstance();
mGamesFragment = SearchGamesFragment.newInstance();
}

@NonNull
@Override
public Fragment getItem(int position) {
public Fragment createFragment(int position) {
switch (position) {
default: // Deliberate fall-through to stream tab
case POSITION_STREAMS:
return mStreamsFragment;
case POSITION_CHANNELS:
return mChannelsFragment;
case POSITION_GAMES:
return mGamesFragment;
default:
return SearchStreamsFragment.newInstance();
}
}

@Override
public int getCount() {
return 3;
}

@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case POSITION_STREAMS:
return getResources().getString(R.string.streams_tab);
case POSITION_CHANNELS:
return getResources().getString(R.string.streamers_tab);
case POSITION_GAMES:
return getResources().getString(R.string.games_tab);
}
return null;
public int getItemCount() {
return TOTAL_COUNT;
}
}
}
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_search.xml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@

</com.google.android.material.appbar.AppBarLayout>

<androidx.viewpager.widget.ViewPager
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_streamer_info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@

</com.google.android.material.appbar.AppBarLayout>

<androidx.viewpager.widget.ViewPager
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
Expand Down