2013-03-10 13 views
6

başlığını (Doc: http://developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html) değiştirmekDinamik Benim uygulamada bir PagerTitleStrip kullanarak currentky olduğum bir android.support.v4.view.PagerTitleStrip

Her şey iyi çalışıyor ve böyle başlık belirledik:

public class PageAdapter extends FragmentPagerAdapter { 

    private List<Fragment> fragments; 

    public PageAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fragments = fragments; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return this.fragments.get(position); 
    } 

    @Override 
    public int getCount() { 
     return this.fragments.size(); 
    } 

    String[] titles = { "1", "2", "3", "4","5" }; 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return titles[position]; 
    } 
} 

Benim endişe şimdi, ilk Parçası yüklenmesi bittiğinde, ben şerit başlığını değiştirmek zorunda olmasıdır.

Zaten FragmentPagerAdapter almaya çalıştı ve manipüle ama

gerçekten getPageTitle yöntemi vardır bir başlık (metin) değiştirmek için başarılı asla çalıştık: mPagerAdapter.getPageTitle (konum) ama hiçbir setPageTitle ..

Herhangi bir fikir veya öneriniz var mı?

+0

PagerAdapter.notifyDataSetChanged() yöntemini kullanmayı denediniz mi? – kape123

+0

@ kape123 Sanırım hardcoded diziyi başka bir şeye nasıl değiştireceğini bilmiyor. –

+0

@ kape123 Son ifadesi bana başka türlü inanmamı sağlar: Gerçekten de getPageTitle yöntemi vardır: mPagerAdapter.getPageTitle (position) ancak setPageTitle ' –

cevap

11

Sorunu doğru bir şekilde anlarsam - verileri daha sonra alırsınız ve ardından başlıklar dizisini güncellemek ve başlıkların yenilemesini tetiklemek istersiniz.

Eğer durum buysa PagerAdapter.notifyDataSetChanged(); Bu yöntem çağrıldıktan sonra Fragmanlar getPageTitle yöntemini çağırır ve kendilerini günceller.

+0

Bu güzel çalışıyor ancak tüm sayfaları yeniden yüklemenin dezavantajına sahip olduğuna inanıyorum: performans için çok iyi değil. –

-1

Çirkin bir çözüm ancak çalışma: Görsel ağacı yineleyin ve metni kendiniz ayarlayın.

Ayrıca, sol bir ilk şeffaf/boş öğe olduğunun farkında olmak zorunda.

İlk başlığı güncellemek için buradaki kod (Xamarin burada).

var firstHidedOneFound = false; 
for (int i = 0; i < _tabstrip.ChildCount; ++i) 
{ 
    var child = _tabstrip.GetChildAt(i) as TextView; 

    if (child == null) { continue; } 
    if (!firstHidedOneFound) 
    { 
     firstHidedOneFound = true; 

     continue; 
    } 
    child.Text = ViewModel.MyShowPanelTitle; 
    break; 
} 
+0

Açıklama yapılmadan neden aşağı çekiliyorsunuz? Becerilerimi geliştirmek istiyorum :) –

İlgili konular