0

我正在使用Expandable列表,其中當我點擊子列表項打開一個Viewpager與選定的第一個選項卡,但我想打開一個特定的選項卡或片段在viewpager,我單擊。 假設我點擊了 「移動開發」 我想打開viewpager.here Mobile開發Tab是我的代碼: 擴展listiview: -如何通過點擊Expandable list子項目打開viewpager中的特定選項卡?

公共類Services_fragment擴展片段{

ExpandableListAdapter listAdapter; 
ExpandableListView expListView; 
List<String> listDataHeader; 
HashMap<String, List<String>> listDataChild; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    final View view = inflater.inflate(R.layout.services_fragment, container, false); 
    ((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Services"); 

    expListView = (ExpandableListView) view.findViewById(R.id.service_listview); 

    prepareListData(); 

    listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild); 


    expListView.setAdapter(listAdapter); 

    expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
     @Override 
     public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { 
      Toast.makeText(
        getActivity(), 
        listDataHeader.get(groupPosition) 
          + " : " 
          + listDataChild.get(
          listDataHeader.get(groupPosition)).get(
          childPosition), Toast.LENGTH_SHORT) 
        .show(); 

      if (groupPosition == 0) { 
       Container_Activity.showFragment(new Development_fragment_viewpager(), ""); 
      } else if (groupPosition == 1) { 
       Container_Activity.showFragment(new Designing_fragment_viewpager(), ""); 
      } else if (groupPosition == 2) { 
       Container_Activity.showFragment(new Seo_fragment_viewpager(), ""); 
      } 
      return false; 
     } 
    }); 

    expListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { 
     @Override 
     public void onGroupExpand(int groupPosition) { 

      Toast.makeText(getActivity(), 
        listDataHeader.get(groupPosition) + " Expanded", 
        Toast.LENGTH_SHORT).show(); 


     } 
    }); 
    return view; 
} 

private void prepareListData() { 
    listDataHeader = new ArrayList<String>(); 
    listDataChild = new HashMap<String, List<String>>(); 


    listDataHeader.add("Development"); 
    listDataHeader.add("Designing"); 
    listDataHeader.add("SEO & SEM"); 


    List<String> development = new ArrayList<String>(); 
    development.add("Web Development"); 
    development.add("Mobile Development"); 
    development.add("Software Development"); 


    List<String> designing = new ArrayList<String>(); 
    designing.add("Logo"); 
    designing.add("Brochure"); 
    designing.add("Catalog"); 
    designing.add("Other 3D Design"); 

    List<String> seosem = new ArrayList<String>(); 
    seosem.add("SEO"); 
    seosem.add("SMM"); 


    listDataChild.put(listDataHeader.get(0), development); // Header, Child data 
    listDataChild.put(listDataHeader.get(1), designing); 
    listDataChild.put(listDataHeader.get(2), seosem); 
} 

}

ViewPager代碼: -

公共類Development_fragment_viewpager延伸片段{

TabLayout tabLayout; 
ViewPager viewPager; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    final View view=inflater.inflate(R.layout.development_fragment_viewpager,container,false); 

    tabLayout= (TabLayout) view.findViewById(R.id.tabLayout_development); 
    tabLayout.setupWithViewPager(viewPager); 

    tabLayout.addTab(tabLayout.newTab().setText("Web Development")); 
    tabLayout.addTab(tabLayout.newTab().setText("Mobile Development")); 
    tabLayout.addTab(tabLayout.newTab().setText(" Software Development")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 


    viewPager= (ViewPager) view.findViewById(R.id.development_pager); 

    Development_Adapter adapter = new Development_Adapter(getChildFragmentManager(), tabLayout.getTabCount()); 

    viewPager.setAdapter(adapter); 

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 

      viewPager.setCurrentItem(tab.getPosition()); 

     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

    return view; 
} 

}

適配器類別: -

公共類Development_Adapter擴展FragmentStatePagerAdapter {

int TabCount; 
public Development_Adapter(FragmentManager fm,int TabCount) { 
    super(fm); 
    this.TabCount=TabCount; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position){ 

     case 0: 
      Web_development_fragment web_development_fragment=new Web_development_fragment(); 
     return web_development_fragment; 

     case 1: 
      Mobileapplication_fragment mobileapplication_fragment=new Mobileapplication_fragment(); 
      return mobileapplication_fragment; 
     case 2: 
      Software_development software_development=new Software_development(); 
      return software_development; 
     default: 
     return null; 
    } 

} 

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

}

+0

使用viewpager.setCurrentItem(指數)函數 – Keerthivasan

+0

@ Keerthivasan你可以用示例 –

回答

0

您可以在片段參數和片段

獲取數據
Fragment fragment=new new Development_fragment_viewpager(); 
Bundle bundle1=new Bundle(); 
bundle.putInt("PagePosition",2); 
fragment.setArguments(bundle1); 
Container_Activity.showFragment(fragment,""); 

,現在在你片段覆蓋onCreate方法

int pageno=0; 
@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Bundle bundle=getArguments(); 
    if (bundle!=null){ 
     pageno=bundle.getInt("PagePosition"); 
    } 
} 

,現在你onCrateView只是調用一個方法

viewPager.setCurrentItem(pageno, false); 

和對其做

+0

解釋不完全正確,,我選擇任何項目在子列表中每次打開頁面2項 –

+0

在Bundle我已經通過頁面號碼,所以你必須通過你想打開它的包的頁碼 –

+0

我也通過捆綁頁碼,但所有的時間顯示,我沒有通過任何改變的位置。 –

相關問題