Как инициализировать пользовательский адаптер в Activity

У меня есть пользовательский адаптер пейджера (PagerIot), который я успешно реализовал, используя фрагмент, как показано ниже

public class SensorIconFragment extends Fragment {



public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

      View view = inflater.inflate(R.layout.layout_listview, container, false);
      ButterKnife.bind(this, view);
      pagerIot = (PagerIot)container;

Однако я хотел бы использовать адаптер пейджера в действии, но проблема в том, что мне нужно знать, как инициализировать пейджер в действии. Во фрагменте это довольно просто, потому что фрагменты имеют onCreateViewMethod, где viewGroup передается в качестве параметра, поэтому я могу просто сказать pPagerIot = (PagerIot)container;

Однако в Activity я не могу просто инициализировать PagerIOT, потому что onCreate не проходит в ViewGroup, поэтому кто-нибудь знает, как я могу инициализировать адаптер в Activity?

Это мой класс PagerIOT ниже

public class PagerIot extends ViewPager
{
   public PagerIot(Context context, AttributeSet attrs)
   {
      super(context, attrs);
   }

   public void allowScrollingToTab(int tab)
   {
      // Set the limit of the number of pages in the page adapter
      ManagementTabFragment.SectionsPagerAdapter adapter = (ManagementTabFragment.SectionsPagerAdapter)getAdapter();
      adapter.allowScrollingToTab(tab);
   }
}

Я также включу вкладку управления, указанную в классе выше

package com.dtect.devicesensorinsight.home.tabs;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.dtect.common.ITabView;
import com.dtect.common.MyFragmentPagerAdapter;
import com.dtect.devicesensorinsight.R;
import com.dtect.devicesensorinsight.events.JumpToManagementTabEvent;
import com.dtect.devicesensorinsight.home.PagerIot;
import com.dtect.devicesensorinsight.home.tabs.management.CostCentreListFragment;
import com.dtect.devicesensorinsight.home.tabs.management.IotTabFragment;
import com.dtect.devicesensorinsight.home.tabs.management.SensorIconFragment;
//import com.dtect.devicesensorinsight.home.tabs.notifications.TenantDetailsFragment;
import com.dtect.devicesensorinsight.home.tabs.management.iot.SensorInformationChildFragment;
import com.dtect.devicesensorinsight.sensors.ItemClickedEvent;

import java.util.Locale;

import butterknife.BindView;
import butterknife.ButterKnife;
import de.greenrobot.event.EventBus;

public class ManagementTabFragment extends Fragment implements ITabView
{
   public static final int TAB_USER_LANDINGPAGE = 0;
   public static final int TAB_TENANT_SCANQRCODE= 1;
   public static final int TAB_TENANT_DETAILS = 2;
   public static final int TAB_UOM_SYMBOLS = 3;
   public static final int TAB_LOCATIONS = 4;
   public static final int TAB_IOT = 5;

   @BindView(R.id.managementpager)
   PagerIot viewPager;
   private SectionsPagerAdapter sectionsPagerAdapter;

   @Nullable
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
   {
      View view = inflater.inflate(R.layout.fragment_management_pages, container, false);
      ButterKnife.bind(this, view);
      sectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());
      viewPager.setAdapter(sectionsPagerAdapter);
      viewPager.setOffscreenPageLimit(5);

      return view;
   }

   @Override
   public void onStart() {
      super.onStart();
      EventBus.getDefault().register(this);
   }

   @Override
   public void onStop() {
      super.onStop();
      EventBus.getDefault().unregister(this);
   }

   public void onEvent(JumpToManagementTabEvent tab) {
      setSelectedPage(tab.tabIndex);
   }

   private void setSelectedPage(int index)
   {
      viewPager.setCurrentItem(index);
   }

   @Override
   public MyFragmentPagerAdapter getAdapter() {
      return sectionsPagerAdapter;
   }

   @Override
   public ViewPager getViewPager() {
      return viewPager;
   }

   /**
    * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
    * one of the sections/tabs/pages.
    */
   public class SectionsPagerAdapter extends MyFragmentPagerAdapter {

      private int allowScrollingToTabOffset = 0;

      public SectionsPagerAdapter(FragmentManager fm) {
         super(fm);
      }

      public void allowScrollingToTab(int tab)
      {
         this.allowScrollingToTabOffset = tab;
         notifyDataSetChanged();
      }

      @Override
      public Fragment getItem(int position) {
         switch (position)
         {

            case TAB_USER_LANDINGPAGE:
               return new UserLandingPageFragment();
            case TAB_UOM_SYMBOLS:
               return new SensorIconFragment();
            case TAB_LOCATIONS:
               return new CostCentreListFragment();
            case TAB_IOT:
               return new IotTabFragment();
            default:
               return null;
         }
      }

      @Override
      public int getCount() {
         return allowScrollingToTabOffset + 1;
      }

      @Override
      public CharSequence getPageTitle(int position) {
         Locale l = Locale.getDefault();
         return "" + position;
      }
   }
}

0 ответов

Другие вопросы по тегам