2015-10-26 18 views
5

ViewPager var ve bir işlem gerçekleşirse ilk Fragment'u değiştirmem gerekiyor. I LatestVideosFragment bir kanalı tıkladığındaGeçerli Fragmanı, Android'de ViewPager uygulamasında değiştirin

public static class PagerAdapter extends FragmentStatePagerAdapter{ 

    private TempChannel latestChannel; 
    private VideosFragment.SortType sortType; 

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

    @Override 
    public Fragment getItem(int position) { 
     switch (position){ 
      case 0: 
       if(latestChannel == null) { 
        return new LatestVideosFragment(); 
       }else{ 
        return VideosFragment.getVideosFragment(latestChannel, sortType); 
       } 
      case 1: 
       return new LiveVideosFragment(); 
      case 2: 
       return new ConversationsFragment(); 
     } 
     return null; 
    } 
} 

Temel olarak, adaptör birinci pozisyon VideosFragment sınıfın bir örneği olarak değişmelidir.

public void startLatestChannelFragment(TempChannel channel, VideosFragment.SortType sortType){ 
    adapter.setLatestChannel(channel, sortType); 
    adapter.notifyDataSetChanged(); 
    Log.d("x", "on channel started"); 
} 

adaptör üzerinde notifyDataSetChanged() çağıran parçasını güncellerdi farz, ama öyle değil. Ayrıca, ViewPager numaralı telefondan invalidate( numaralı telefonu arayarak herhangi bir etki yaratmaya çalıştık. Fragment, yalnızca üçüncü sekmeye gidip sonra da ilkine dönersem güncellenir.

cevap

4

kontrol bazı iyi çözümler için buraya cevaplar: ViewPager PagerAdapter not updating the View

Temelde PagerAdapter size verecektir istenen yürürlükte getItemPosition üzerine yazarak.

public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 
+0

Teşekkürler! Bir yöntemin geçersiz kılınması çok kolay olacağını düşünmüyordu – kimv