84 lines
2.4 KiB
Java
84 lines
2.4 KiB
Java
package info.nightscout.androidaps.tabs;
|
|
|
|
import android.content.Context;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.FragmentManager;
|
|
import androidx.fragment.app.FragmentPagerAdapter;
|
|
import android.view.ViewGroup;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import info.nightscout.androidaps.R;
|
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
|
import info.nightscout.androidaps.logging.L;
|
|
import info.nightscout.androidaps.utils.SP;
|
|
|
|
/**
|
|
* Created by mike on 30.05.2016.
|
|
*/
|
|
public class TabPageAdapter extends FragmentPagerAdapter {
|
|
|
|
ArrayList<PluginBase> visibleFragmentList = new ArrayList<>();
|
|
|
|
Context context;
|
|
|
|
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
|
|
|
public TabPageAdapter(FragmentManager fm, Context context) {
|
|
super(fm);
|
|
this.context = context;
|
|
}
|
|
|
|
@Override
|
|
@Nullable
|
|
public Fragment getItem(int position) {
|
|
//Fragment fragment = (Fragment) visibleFragmentList.get(position);
|
|
return Fragment.instantiate(context, visibleFragmentList.get(position).pluginDescription.getFragmentClass());
|
|
}
|
|
|
|
public PluginBase getPluginAt(int position) {
|
|
return visibleFragmentList.get(position);
|
|
}
|
|
|
|
@Override
|
|
public void finishUpdate(ViewGroup container) {
|
|
try {
|
|
super.finishUpdate(container);
|
|
} catch (NullPointerException nullPointerException) {
|
|
System.out.println("Catch the NullPointerException in FragmentStatePagerAdapter.finishUpdate");
|
|
} catch (IllegalStateException e) {
|
|
log.error("Unhandled exception", e);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public CharSequence getPageTitle(int position) {
|
|
if (SP.getBoolean(R.string.key_short_tabtitles, false)) {
|
|
return visibleFragmentList.get(position).getNameShort();
|
|
}
|
|
return visibleFragmentList.get(position).getName();
|
|
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return visibleFragmentList.size();
|
|
}
|
|
|
|
public void registerNewFragment(PluginBase plugin) {
|
|
if (plugin.hasFragment() && plugin.isFragmentVisible()) {
|
|
visibleFragmentList.add(plugin);
|
|
notifyDataSetChanged();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public long getItemId(int position) {
|
|
return System.identityHashCode(visibleFragmentList.get(position));
|
|
}
|
|
}
|