9

Malzeme Tasarım Desteği kitaplığı ile bir sihirbaz uygulamak istiyorum.Seçilen sekmeyi değiştirmeden TabLayout'u dinamik olarak güncelleştirme

ViewPager ve Tablayout kullanıyorum ama dinamik olarak yeni sekmeler eklemekte sorun yaşıyorum.

adapter.addFrag(new DummyFragment(), "3"); 
adapter.notifyDataSetChanged(); 
tabLayout.setTabsFromPagerAdapter(adapter); 

sorundur: Listedeki bir unsur tıklandığında

viewPager = (ViewPager) findViewById(R.id.tab_viewpager); 
tabLayout = (TabLayout) findViewById(R.id.tab_layout); 

adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
adapter.addFrag(new DummyFragment(), "1"); 
adapter.addFrag(new DummyFragment(), "2"); 
viewPager.setAdapter(adapter); 
tabLayout.setupWithViewPager(viewPager); 

Sonra başka bir kart eklemek istiyorum:

Birincisi, onCreate yönteminde benim widget kurmak: ekledikten sonra, seçilen kart ilk önce sıfırlandı.

Bu davranış nasıl önlenir?

cevap

0

Sadece aynı sorunu koştu ve neyse ki bir çözüm buldum (bir tatlı biri, ama o inşaat): Bu hafif bir modifikasyon olup

pageradapter.notifyDataSetChanged(); 
for (int i = 0; i < viewpager.getCount(); i++) { 
    sectionsTabLayout.getTabAt(i).setText(sectionsViewPagerAdapter.getPageTitle(i)); 
} 
0

:

sekmeleri güncellemeniz gerektiğinde @Kalpit koduna. Bu yeni sekmeyi dinamik olarak düzenimize eklemeniz ve setupWithViewPager yöntemini kullandığınızda tablayout olarak adlandırılan bağdaştırıcıdan aynı yöntemi çağırarak başlığı atamanız gerekir. Henüz oluşturulmamış sekmeler için bu try catch deyimini kullandım yine de onlara bir başlık atamayı deneyebilirsiniz.

adapter.notifyDataSetChanged(); 
    for(int i = 0;i<adapter.getCount();i++){ 
     try{ 
     tablayout.getTabAt(i).setText(adapter.getPageTitle(i)); 
     } 
     catch(IndexOutOfBoundException e){ 
     tablayout.addTab(tablayout.newTab().setText(adapter.getPageTitle(i)); 
     } 
    } 
İlgili konular