AndroidAPS/app/src/main/java/info/nightscout/androidaps/tabs/TabPageAdapter.java
2019-05-16 13:57:37 +02:00

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));
}
}