2018-10-02 17:09:16 +02:00
|
|
|
package org.schabi.newpipe.fragments.detail;
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
import android.view.ViewGroup;
|
|
|
|
|
2019-10-04 14:59:08 +02:00
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
import androidx.fragment.app.FragmentManager;
|
|
|
|
import androidx.fragment.app.FragmentPagerAdapter;
|
2018-10-02 17:09:16 +02:00
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
public class TabAdaptor extends FragmentPagerAdapter {
|
|
|
|
private final List<Fragment> mFragmentList = new ArrayList<>();
|
|
|
|
private final List<String> mFragmentTitleList = new ArrayList<>();
|
2018-10-19 15:14:03 +02:00
|
|
|
private final FragmentManager fragmentManager;
|
2018-10-02 17:09:16 +02:00
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public TabAdaptor(final FragmentManager fm) {
|
2018-10-02 17:09:16 +02:00
|
|
|
super(fm);
|
2018-10-19 15:14:03 +02:00
|
|
|
this.fragmentManager = fm;
|
2018-10-02 17:09:16 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public Fragment getItem(final int position) {
|
2018-10-02 17:09:16 +02:00
|
|
|
return mFragmentList.get(position);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getCount() {
|
|
|
|
return mFragmentList.size();
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void addFragment(final Fragment fragment, final String title) {
|
2018-10-02 17:09:16 +02:00
|
|
|
mFragmentList.add(fragment);
|
|
|
|
mFragmentTitleList.add(title);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void clearAllItems() {
|
|
|
|
mFragmentList.clear();
|
|
|
|
mFragmentTitleList.clear();
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void removeItem(final int position) {
|
2018-10-02 17:09:16 +02:00
|
|
|
mFragmentList.remove(position == 0 ? 0 : position - 1);
|
|
|
|
mFragmentTitleList.remove(position == 0 ? 0 : position - 1);
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void updateItem(final int position, final Fragment fragment) {
|
2018-10-02 17:09:16 +02:00
|
|
|
mFragmentList.set(position, fragment);
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void updateItem(final String title, final Fragment fragment) {
|
2020-08-16 10:24:58 +02:00
|
|
|
final int index = mFragmentTitleList.indexOf(title);
|
2020-03-31 19:20:15 +02:00
|
|
|
if (index != -1) {
|
2018-10-02 17:09:16 +02:00
|
|
|
updateItem(index, fragment);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public int getItemPosition(final Object object) {
|
|
|
|
if (mFragmentList.contains(object)) {
|
|
|
|
return mFragmentList.indexOf(object);
|
|
|
|
} else {
|
|
|
|
return POSITION_NONE;
|
|
|
|
}
|
2018-10-02 17:09:16 +02:00
|
|
|
}
|
2018-10-02 18:00:11 +02:00
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public int getItemPositionByTitle(final String title) {
|
2019-03-24 02:01:28 +01:00
|
|
|
return mFragmentTitleList.indexOf(title);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Nullable
|
2020-03-31 19:20:15 +02:00
|
|
|
public String getItemTitle(final int position) {
|
2019-03-24 02:01:28 +01:00
|
|
|
if (position < 0 || position >= mFragmentTitleList.size()) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
return mFragmentTitleList.get(position);
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void notifyDataSetUpdate() {
|
2018-10-02 18:00:11 +02:00
|
|
|
notifyDataSetChanged();
|
|
|
|
}
|
2018-10-19 15:14:03 +02:00
|
|
|
|
|
|
|
@Override
|
2020-03-31 19:20:15 +02:00
|
|
|
public void destroyItem(final ViewGroup container, final int position, final Object object) {
|
2018-10-19 15:14:03 +02:00
|
|
|
fragmentManager.beginTransaction().remove((Fragment) object).commitNowAllowingStateLoss();
|
|
|
|
}
|
|
|
|
|
2018-10-02 17:09:16 +02:00
|
|
|
}
|